Changeset: ec2096728c7a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ec2096728c7a
Modified Files:
        gdk/gdk_aggr.c
        gdk/gdk_imprints.c
        gdk/gdk_interprocess.c
        gdk/gdk_logger.c
        gdk/gdk_search.c
        gdk/gdk_select.c
        gdk/gdk_utils.c
        tools/merovingian/daemon/connections.c
Branch: default
Log Message:

Merge with Dec2016 branch.


diffs (263 lines):

diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -2416,9 +2416,13 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
                /* there is a candidate list, replace b (and g, if
                 * given) with just the values we're interested in */
                b = BATproject(s, b);
+               if (b == NULL)
+                       return NULL;
                freeb = 1;
                if (g) {
                        g = BATproject(s, g);
+                       if (g == NULL)
+                               goto bunins_failed;
                        freeg = 1;
                }
        }
@@ -2436,7 +2440,8 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
                                BBPunfix(g->batCacheid);
                        return bn;
                }
-               BATsort(&t1, &t2, NULL, g, NULL, NULL, 0, 0);
+               if (BATsort(&t1, &t2, NULL, g, NULL, NULL, 0, 0) != GDK_SUCCEED)
+                       goto bunins_failed;
                if (freeg)
                        BBPunfix(g->batCacheid);
                g = t1;
@@ -2444,7 +2449,11 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
        } else {
                t2 = NULL;
        }
-       BATsort(&t1, NULL, NULL, b, t2, g, 0, 0);
+       if (BATsort(&t1, NULL, NULL, b, t2, g, 0, 0) != GDK_SUCCEED) {
+               if (t2)
+                       BBPunfix(t2->batCacheid);
+               goto bunins_failed;
+       }
        if (freeb)
                BBPunfix(b->batCacheid);
        b = t1;
@@ -2454,7 +2463,7 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
 
        bn = COLnew(g ? min : 0, b->ttype, ngrp, TRANSIENT);
        if (bn == NULL)
-               return NULL;
+               goto bunins_failed;
 
        bi = bat_iterator(b);
        nil = ATOMnilptr(b->ttype);
@@ -2511,7 +2520,8 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
                }
                index = (BUN) (r + (p-r-1) * quantile);
                v = BUNtail(bi, index);
-               BUNappend(bn, v, FALSE);
+               if (BUNappend(bn, v, FALSE) != GDK_SUCCEED)
+                       goto bunins_failed;
                nils += (*atomcmp)(v, nil) == 0;
        }
 
@@ -2532,7 +2542,8 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
                BBPunfix(b->batCacheid);
        if (freeg)
                BBPunfix(g->batCacheid);
-       BBPunfix(bn->batCacheid);
+       if (bn)
+               BBPunfix(bn->batCacheid);
        return NULL;
 }
 
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -309,6 +309,7 @@ BATimprints(BAT *b)
                bat p = VIEWtparent(b);
                o = b;
                b = BATdescriptor(p);
+               assert(b);
                if (BATcheckimprints(b)) {
                        BBPunfix(b->batCacheid);
                        return GDK_SUCCEED;
diff --git a/gdk/gdk_interprocess.c b/gdk/gdk_interprocess.c
--- a/gdk/gdk_interprocess.c
+++ b/gdk/gdk_interprocess.c
@@ -81,6 +81,9 @@ GDKinitmmap(size_t id, size_t size, void
        int fd;
        int mod = MMAP_READ | MMAP_WRITE | MMAP_SEQUENTIAL | MMAP_SYNC | 
MAP_SHARED;
        char *path = NULL;
+
+       assert(return_ptr != NULL);
+
        GDKmmapfile(address, 100, id);
 
        /* round up to multiple of GDK_mmap_pagesize with a
@@ -109,9 +112,7 @@ GDKinitmmap(size_t id, size_t size, void
                goto cleanup;
        }
        GDKfree(path);
-       if (return_ptr != NULL) {
-               *return_ptr = ptr;
-       }
+       *return_ptr = ptr;
        if (return_size != NULL) {
                *return_size = size;
        }
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1128,6 +1128,9 @@ bm_tids(BAT *b, BAT *d)
        BUN sz = BATcount(b);
        BAT *tids = COLnew(0, TYPE_void, 0, TRANSIENT);
 
+       if (tids == NULL)
+               return NULL;
+
        BATtseqbase(tids, 0);
        BATsetcount(tids, sz);
        tids->trevsorted = 0;
@@ -1217,11 +1220,23 @@ bm_subcommit(logger *lg, BAT *list_bid, 
        n[i++] = catalog_bid->batCacheid;
        n[i++] = catalog_nme->batCacheid;
        n[i++] = dcatalog->batCacheid;
-       if (BATcount(dcatalog) > (BATcount(catalog_nme)/2) && catalog_bid == 
list_bid && catalog_nme == list_nme && lg->catalog_bid == catalog_bid) {
-               BAT *bids, *nmes, *tids = bm_tids(catalog_bid, dcatalog);
+       if (BATcount(dcatalog) > (BATcount(catalog_nme)/2) &&
+           catalog_bid == list_bid &&
+           catalog_nme == list_nme &&
+           lg->catalog_bid == catalog_bid) {
+               BAT *bids, *nmes, *tids;
 
+               tids = bm_tids(catalog_bid, dcatalog);
                bids = logbat_new(TYPE_int, BATSIZE, PERSISTENT);
                nmes = logbat_new(TYPE_str, BATSIZE, PERSISTENT);
+               if (tids == NULL || bids == NULL || nmes == NULL) {
+                       if (tids)
+                               BBPunfix(tids->batCacheid);
+                       BBPreclaim(bids);
+                       BBPreclaim(nmes);
+                       GDKfree(n);
+                       return GDK_FAIL;
+               }
                BATappend(bids, catalog_bid, tids, TRUE);
                BATappend(nmes, catalog_nme, tids, TRUE);
                logbat_destroy(tids);
@@ -1297,7 +1312,7 @@ logger_set_logdir_path(char *filename, c
  * Load data and persist it in the BATs
  * Convert 32bit data to 64bit, unless running in read-only mode */
 static int
-logger_load(int debug, const char* fn, char filename[PATHLENGTH], logger* lg)
+logger_load(int debug, const char *fn, char filename[PATHLENGTH], logger *lg)
 {
        int id = LOG_SID;
        FILE *fp;
@@ -1607,13 +1622,11 @@ logger_load(int debug, const char* fn, c
   error:
        if (fp)
                fclose(fp);
-       if (lg) {
-               GDKfree(lg->fn);
-               GDKfree(lg->dir);
-               GDKfree(lg->local_dir);
-               GDKfree(lg->buf);
-               GDKfree(lg);
-       }
+       GDKfree(lg->fn);
+       GDKfree(lg->dir);
+       GDKfree(lg->local_dir);
+       GDKfree(lg->buf);
+       GDKfree(lg);
        return LOG_ERR;
 }
 
@@ -2250,7 +2263,7 @@ log_bat(logger *lg, BAT *b, const char *
                        for (p = b->batInserted; p < BUNlast(b) && ok == 
GDK_SUCCEED; p++) {
                                const void *t = BUNtail(bi, p);
 
-                               ok = (ok != GDK_SUCCEED) ? ok : wt(t, lg->log, 
1);
+                               ok = wt(t, lg->log, 1);
                        }
                }
 
@@ -2358,9 +2371,13 @@ log_tend(logger *lg)
                BAT *cands, *tids, *bids;
 
                tids = bm_tids(lg->snapshots_tid, lg->dsnapshots);
+               if (tids == NULL) {
+                       fprintf(stderr, "!ERROR: log_tend: bm_tids failed\n");
+                       return LOG_ERR;
+               }
                cands = BATselect(lg->snapshots_tid, tids, &lg->tid, &lg->tid,
                                     TRUE, TRUE, FALSE);
-               if (tids == NULL || cands == NULL) {
+               if (cands == NULL) {
                        fprintf(stderr, "!ERROR: log_tend: subselect failed\n");
                        return LOG_ERR;
                }
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1622,7 +1622,7 @@ BATselect(BAT *b, BAT *s, const void *tl
                                rs += low;
                                bn = COLnew(0, TYPE_oid, high-low, TRANSIENT);
                                if (bn == NULL)
-                                       GDKerror("memory allocation error");
+                                       return NULL;
 
                                rbn = (oid *) Tloc((bn), 0);
 
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1646,15 +1646,6 @@ GDKmalloc_prefixsize(size_t size)
        return s;
 }
 
-void
-GDKsetmallocsuccesscount(lng count)
-{
-       (void) count;
-#ifndef NDEBUG
-       GDK_malloc_success_count = count;
-#endif
-}
-
 
 /*
  * The emergency flag can be set to force a fatal error if needed.
@@ -1914,6 +1905,15 @@ GDKstrdup(const char *s)
 
 #endif /* STATIC_CODE_ANALYSIS */
 
+void
+GDKsetmallocsuccesscount(lng count)
+{
+       (void) count;
+#ifndef NDEBUG
+       GDK_malloc_success_count = count;
+#endif
+}
+
 #undef GDKstrndup
 char *
 GDKstrndup(const char *s, size_t n)
diff --git a/tools/merovingian/daemon/connections.c 
b/tools/merovingian/daemon/connections.c
--- a/tools/merovingian/daemon/connections.c
+++ b/tools/merovingian/daemon/connections.c
@@ -156,14 +156,14 @@ openConnectionUNIX(int *ret, const char 
        int sock;
        int omask;
 
+       if (strlen(path) >= sizeof(server.sun_path))
+               return newErr("pathname for UNIX stream socket too long");
+
        sock = socket(AF_UNIX, SOCK_STREAM, 0);
        if (sock == -1)
                return(newErr("creation of UNIX stream socket failed: %s",
                                        strerror(errno)));
 
-       if (strlen(path) >= sizeof(server.sun_path))
-               return newErr("pathname for UNIX stream socket too long");
-
        memset(&server, 0, sizeof(struct sockaddr_un));
        server.sun_family = AF_UNIX;
        strncpy(server.sun_path, path, sizeof(server.sun_path) - 1);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to