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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list