Changeset: 819c64064b73 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=819c64064b73
Modified Files:
        sql/server/rel_schema.c
Branch: Jul2017
Log Message:

Use GDKmalloc and friends; cleanup after realloc failure.


diffs (61 lines):

diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -227,8 +227,8 @@ table_constraint_name(symbol *s, sql_tab
        slen = strlen(suffix);
        while (len + slen >= buflen)
                buflen += BUFSIZ;
-       buf = malloc(buflen);
-       if(!buf) {
+       buf = GDKmalloc(buflen);
+       if (!buf) {
                return NULL;
        }
        strcpy(buf, t->base.name);
@@ -237,11 +237,14 @@ table_constraint_name(symbol *s, sql_tab
        for (; nms; nms = nms->next) {
                slen = strlen(nms->data.sval);
                while (len + slen + 1 >= buflen) {
+                       char *nbuf;
                        buflen += BUFSIZ;
-                       buf = realloc(buf, buflen);
-                       if(!buf) {
+                       nbuf = GDKrealloc(buf, buflen);
+                       if (!nbuf) {
+                               GDKfree(buf);
                                return NULL;
                        }
+                       buf = nbuf;
                }
                snprintf(buf + len, buflen - len, "_%s", nms->data.sval);
                len += slen + 1;
@@ -250,11 +253,14 @@ table_constraint_name(symbol *s, sql_tab
        /* add suffix */
        slen = strlen(suffix);
        while (len + slen >= buflen) {
+               char *nbuf;
                buflen += BUFSIZ;
-               buf = realloc(buf, buflen);
-               if(!buf) {
+               nbuf = GDKrealloc(buf, buflen);
+               if (!nbuf) {
+                       GDKfree(buf);
                        return NULL;
                }
+               buf = nbuf;
        }
        snprintf(buf + len, buflen - len, "%s", suffix);
 
@@ -622,9 +628,11 @@ table_constraint(mvc *sql, symbol *s, sq
 
                if (!opt_name)
                        opt_name = table_constraint_name(sym, t);
+               if (opt_name == NULL)
+                       return SQL_ERR;
                res = table_constraint_type(sql, opt_name, sym, ss, t);
                if (opt_name != l->h->data.sval)
-                       free(opt_name);
+                       GDKfree(opt_name);
        }
 
        if (res != SQL_OK) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to