@@ -840,7 +840,7 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initialize
840
840
struct ECPGtype * type;
841
841
char *dimension = $3.index1; /* dimension of array */
842
842
char *length = $3.index2; /* length of string */
843
- char dim[14L] ;
843
+ char *dim_str ;
844
844
char *vcn;
845
845
846
846
adjust_array(actual_type[struct_level].type_enum, &dimension, &length, actual_type[struct_level].type_dimension, actual_type[struct_level].type_index, strlen($1), false);
@@ -864,9 +864,9 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initialize
864
864
type = ECPGmake_array_type(ECPGmake_simple_type(actual_type[struct_level].type_enum, length, varchar_counter), dimension);
865
865
866
866
if (strcmp(dimension, "0") == 0 || abs(atoi(dimension)) == 1)
867
- *dim = '\0' ;
867
+ dim_str=make_str("") ;
868
868
else
869
- sprintf(dim, "[%s]", dimension);
869
+ dim_str=cat_str(3, make_str("["), mm_strdup( dimension), make_str("]") );
870
870
/* cannot check for atoi <= 0 because a defined constant will yield 0 here as well */
871
871
if (atoi(length) < 0 || strcmp(length, "0") == 0)
872
872
mmerror(PARSE_ERROR, ET_ERROR, "pointers to varchar are not implemented");
@@ -877,7 +877,7 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initialize
877
877
if (strcmp(dimension, "0") == 0)
878
878
$$ = cat_str(7, make2_str(make_str(" struct varchar_"), vcn), make_str(" { int len; char arr["), mm_strdup(length), make_str("]; } *"), mm_strdup($2), $4, $5);
879
879
else
880
- $$ = cat_str(8, make2_str(make_str(" struct varchar_"), vcn), make_str(" { int len; char arr["), mm_strdup(length), make_str("]; } "), mm_strdup($2), mm_strdup(dim) , $4, $5);
880
+ $$ = cat_str(8, make2_str(make_str(" struct varchar_"), vcn), make_str(" { int len; char arr["), mm_strdup(length), make_str("]; } "), mm_strdup($2), dim_str , $4, $5);
881
881
varchar_counter++;
882
882
break;
883
883
0 commit comments