1
1
/* dynamic SQL support routines
2
2
*
3
- * $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.22 2007/06/11 11:52:08 meskes Exp $
3
+ * $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.23 2007/08/14 10:01:52 meskes Exp $
4
4
*/
5
5
6
6
#define POSTGRES_ECPG_INTERNAL
@@ -495,6 +495,8 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...)
495
495
if (!desc_item )
496
496
return false;
497
497
desc_item -> num = index ;
498
+ if (desc -> count < index )
499
+ desc -> count = index ;
498
500
desc_item -> next = desc -> items ;
499
501
desc -> items = desc_item ;
500
502
}
@@ -508,7 +510,6 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...)
508
510
{
509
511
enum ECPGdtype itemtype ;
510
512
const char * tobeinserted = NULL ;
511
- bool malloced ;
512
513
513
514
itemtype = va_arg (args , enum ECPGdtype );
514
515
@@ -542,11 +543,12 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...)
542
543
{
543
544
case ECPGd_data :
544
545
{
545
- if (!ECPGstore_input (lineno , true, var , & tobeinserted , & malloced , false))
546
+ if (!ECPGstore_input (lineno , true, var , & tobeinserted , false))
546
547
{
547
548
ECPGfree (var );
548
549
return false;
549
550
}
551
+
550
552
ECPGfree (desc_item -> data ); /* free() takes care of a potential NULL value */
551
553
desc_item -> data = (char * ) tobeinserted ;
552
554
tobeinserted = NULL ;
@@ -583,13 +585,7 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...)
583
585
return false;
584
586
}
585
587
}
586
-
587
- /*
588
- * if (itemtype == ECPGd_data) { free(desc_item->data);
589
- * desc_item->data = NULL; }
590
- */
591
- }
592
- while (true);
588
+ } while (true);
593
589
ECPGfree (var );
594
590
595
591
return true;
@@ -598,18 +594,18 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...)
598
594
bool
599
595
ECPGdeallocate_desc (int line , const char * name )
600
596
{
601
- struct descriptor * i ;
597
+ struct descriptor * desc ;
602
598
struct descriptor * * lastptr = & all_descriptors ;
603
599
struct sqlca_t * sqlca = ECPGget_sqlca ();
604
600
605
601
ECPGinit_sqlca (sqlca );
606
- for (i = all_descriptors ; i ; lastptr = & i -> next , i = i -> next )
602
+ for (desc = all_descriptors ; desc ; lastptr = & desc -> next , desc = desc -> next )
607
603
{
608
- if (!strcmp (name , i -> name ))
604
+ if (!strcmp (name , desc -> name ))
609
605
{
610
606
struct descriptor_item * desc_item ;
611
607
612
- for (desc_item = i -> items ; desc_item ;)
608
+ for (desc_item = desc -> items ; desc_item ;)
613
609
{
614
610
struct descriptor_item * di ;
615
611
@@ -619,10 +615,10 @@ ECPGdeallocate_desc(int line, const char *name)
619
615
ECPGfree (di );
620
616
}
621
617
622
- * lastptr = i -> next ;
623
- ECPGfree (i -> name );
624
- PQclear (i -> result );
625
- ECPGfree (i );
618
+ * lastptr = desc -> next ;
619
+ ECPGfree (desc -> name );
620
+ PQclear (desc -> result );
621
+ ECPGfree (desc );
626
622
return true;
627
623
}
628
624
}
0 commit comments