Changeset: 9cfa877e2741 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9cfa877e2741
Modified Files:
        sql/backends/monet5/sql_scenario.c
Branch: Nov2019
Log Message:

Allocation checks


diffs (64 lines):

diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -1390,32 +1390,38 @@ SQLCacheRemove(Client c, str nme)
 str
 SQLcallback(Client c, str msg)
 {
-       char *newerr;
+       char *newerr = NULL;
 
-       if (msg &&
-           (newerr = GDKmalloc(strlen(msg) + 1)) != NULL) {
-               /* remove exception decoration */
-               char *m, *n, *p, *s;
-               size_t l;
+       if (msg) {
+               if (!(newerr = GDKmalloc(strlen(msg) + 1))) {
+                       msg = createException(SQL, "SQLcallback", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
+               } else {
+                       /* remove exception decoration */
+                       char *m, *n, *p, *s;
+                       size_t l;
 
-               m = msg;
-               p = newerr;
-               while (m && *m) {
-                       n = strchr(m, '\n');
-                       s = getExceptionMessageAndState(m);
-                       if (n) {
-                               n++; /* include newline */
-                               l = n - s;
-                       } else {
-                               l = strlen(s);
+                       m = msg;
+                       p = newerr;
+                       while (m && *m) {
+                               n = strchr(m, '\n');
+                               s = getExceptionMessageAndState(m);
+                               if (n) {
+                                       n++; /* include newline */
+                                       l = n - s;
+                               } else {
+                                       l = strlen(s);
+                               }
+                               memcpy(p, s, l);
+                               p += l;
+                               m = n;
                        }
-                       memcpy(p, s, l);
-                       p += l;
-                       m = n;
+                       *p = 0;
+                       freeException(msg);
+                       if (!(msg = GDKrealloc(newerr, strlen(newerr) + 1))) {
+                               GDKfree(newerr);
+                               msg = createException(SQL, "SQLcallback", 
SQLSTATE(HY001) MAL_MALLOC_FAIL);
+                       }
                }
-               *p = 0;
-               freeException(msg);
-               msg = GDKrealloc(newerr, strlen(newerr) + 1);
        }
        return MALcallback(c, msg);
 }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to