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

Reply via email to