Changeset: d9db541629c4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d9db541629c4
Modified Files:
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:
Allocation checks and fixed memory leaks
diffs (45 lines):
diff --git a/sql/backends/monet5/sql_execute.c
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -979,8 +979,11 @@ RAstatement2(Client cntxt, MalBlkPtr mb,
sql_subtype *t = exp_subtype(e);
str got = subtype2string(t), expected = (str)
m->data;
- if (strcmp(expected, got) != 0)
+ if (!got)
+ msg = createException(SQL,
"RAstatement2", SQLSTATE(HY013) MAL_MALLOC_FAIL);
+ else if (strcmp(expected, got) != 0)
msg = createException(SQL,
"RAstatement2", SQLSTATE(42000) "Parameter %d has wrong SQL type, expected %s,
but got %s instead", i, expected, got);
+ GDKfree(got);
i++;
}
}
diff --git a/sql/backends/monet5/sql_gencode.c
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -459,14 +459,23 @@ static int
for (n = r->exps->h; n; n = n->next) { /* Send SQL types of the
projection's expressions */
sql_exp *e = n->data;
sql_subtype *t = exp_subtype(e);
+ str next = subtype2string(t);
+ if (!next) {
+ GDKfree(buf);
+ buf = NULL;
+ break;
+ }
if ((nr + 100) > len) {
buf = GDKrealloc(buf, len*=2);
- if(buf == NULL)
+ if (buf == NULL) {
+ GDKfree(next);
break;
+ }
}
- nr += snprintf(buf+nr, len-nr, "%s%s", subtype2string(t),
n->next?"%%":"");
+ nr += snprintf(buf+nr, len-nr, "%s%s", next, n->next?"%%":"");
+ GDKfree(next);
}
if (buf) {
o = newFcnCall(curBlk, remoteRef, putRef);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list