diff options
author | Michael Meskes <meskes@postgresql.org> | 2015-06-12 14:52:55 +0200 |
---|---|---|
committer | Michael Meskes <meskes@postgresql.org> | 2015-06-13 11:14:07 +0200 |
commit | ec311b1d8f2062d600201c846f817a80eadca6ca (patch) | |
tree | eb05f414206e17c6611db126b489adcc724c08cc /src/interfaces/ecpg/preproc/descriptor.c | |
parent | 1ea539ae3fc197e6512e09609229a2bad8f3001d (diff) |
Fixed some memory leaks in ECPG.
Patch by Michael Paquier
Conflicts:
src/interfaces/ecpg/preproc/variable.c
Diffstat (limited to 'src/interfaces/ecpg/preproc/descriptor.c')
-rw-r--r-- | src/interfaces/ecpg/preproc/descriptor.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/interfaces/ecpg/preproc/descriptor.c b/src/interfaces/ecpg/preproc/descriptor.c index 115cb17ddc1..22ee6bf2049 100644 --- a/src/interfaces/ecpg/preproc/descriptor.c +++ b/src/interfaces/ecpg/preproc/descriptor.c @@ -175,6 +175,7 @@ output_get_descr(char *desc_name, char *index) for (results = assignments; results != NULL; results = results->next) { const struct variable *v = find_variable(results->variable); + char *str_zero = mm_strdup("0"); switch (results->value) { @@ -188,7 +189,8 @@ output_get_descr(char *desc_name, char *index) break; } fprintf(yyout, "%s,", get_dtype(results->value)); - ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, mm_strdup("0"), NULL, NULL); + ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL); + free(str_zero); } drop_assignments(); fputs("ECPGd_EODT);\n", yyout); @@ -292,8 +294,12 @@ output_set_descr(char *desc_name, char *index) case ECPGd_indicator: case ECPGd_length: case ECPGd_type: - fprintf(yyout, "%s,", get_dtype(results->value)); - ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, mm_strdup("0"), NULL, NULL); + { + char *str_zero = mm_strdup("0"); + fprintf(yyout, "%s,", get_dtype(results->value)); + ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL); + free(str_zero); + } break; default: |