Changeset: d4dc3e38202c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d4dc3e38202c Modified Files: sql/backends/monet5/sql_statement.c Branch: default Log Message:
Plug memory leaks. pushArgumentId no longer takes over the name argument but copies its content. diffs (102 lines): diff --git a/sql/backends/monet5/sql_statement.c b/sql/backends/monet5/sql_statement.c --- a/sql/backends/monet5/sql_statement.c +++ b/sql/backends/monet5/sql_statement.c @@ -286,6 +286,7 @@ stmt_var(backend *be, const char *varnam { MalBlkPtr mb = be->mb; InstrPtr q = NULL; + char buf[IDLENGTH]; if (level == 1 ) { /* global */ int tt = t->type->localtype; @@ -298,26 +299,16 @@ stmt_var(backend *be, const char *varnam setVarType(mb, getArg(q, 0), tt); setVarUDFtype(mb, getArg(q, 0)); } else if (!declare) { - char *buf = GDKmalloc(MAXIDENTLEN); - - if (buf == NULL) - return NULL; - (void) snprintf(buf, MAXIDENTLEN, "A%s", varname); + (void) snprintf(buf, sizeof(buf), "A%s", varname); q = newAssignment(mb); q = pushArgumentId(mb, q, buf); - GDKfree(buf); } else { - char *buf; int tt; tt = t->type->localtype; - buf = GDKmalloc(MAXIDENTLEN); - if (buf == NULL) - return NULL; - (void) snprintf(buf, MAXIDENTLEN, "A%s", varname); + (void) snprintf(buf, sizeof(buf), "A%s", varname); q = newInstruction(mb, NULL, NULL); if (q == NULL) { - GDKfree(buf); return NULL; } q->argc = q->retc = 0; @@ -349,20 +340,15 @@ stmt_vars(backend *be, const char *varna { MalBlkPtr mb = be->mb; InstrPtr q = NULL; - - char *buf; + char buf[IDLENGTH]; int tt = 0; /* declared table */ if (dump_table(mb, t) < 0) return NULL; - buf = GDKmalloc(MAXIDENTLEN); - if (buf == NULL) - return NULL; - (void) snprintf(buf, MAXIDENTLEN, "A%s", varname); + (void) snprintf(buf, sizeof(buf), "A%s", varname); q = newInstruction(mb, NULL, NULL); if (q == NULL) { - GDKfree(buf); return NULL; } q->argc = q->retc = 0; @@ -398,11 +384,9 @@ stmt_varnr(backend *be, int nr, sql_subt if (be->mvc->argc && be->mvc->args[nr]->varid >= 0) { q = pushArgument(mb, q, be->mvc->args[nr]->varid); } else { - char *buf = GDKmalloc(IDLENGTH); - - if (buf == NULL) - return NULL; - (void) snprintf(buf, IDLENGTH, "A%d", nr); + char buf[IDLENGTH]; + + (void) snprintf(buf, sizeof(buf), "A%d", nr); q = pushArgumentId(mb, q, buf); } if (q) { @@ -3414,7 +3398,7 @@ stmt_assign(backend *be, const char *var if (val && val->nr < 0) return NULL; if (level != 1) { - char *buf; + char buf[IDLENGTH]; if (!val) { /* drop declared table */ @@ -3423,13 +3407,9 @@ stmt_assign(backend *be, const char *var if (getDestVar(k) < 0) return NULL; } - buf = GDKmalloc(MAXIDENTLEN); - if (buf == NULL) - return NULL; - (void) snprintf(buf, MAXIDENTLEN, "A%s", varname); + (void) snprintf(buf, sizeof(buf), "A%s", varname); q = newInstruction(mb, NULL, NULL); if (q == NULL) { - GDKfree(buf); return NULL; } q->argc = q->retc = 0; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list