Changeset: f191fb03b979 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f191fb03b979
Modified Files:
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_join.c
gdk/gdk_project.c
gdk/gdk_storage.c
tools/merovingian/utils/control.c
Branch: Nov2019
Log Message:
Coverity fixes.
diffs (134 lines):
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1273,7 +1273,7 @@ BUNinplace(BAT *b, BUN p, const void *t,
ptr _ptr;
_ptr = BUNtloc(bi, p);
switch (b->twidth) {
- case 1:
+ default: /* only three or four cases possible */
_d = (var_t) * (uint8_t *) _ptr + GDK_VAROFFSET;
break;
case 2:
@@ -1297,7 +1297,7 @@ BUNinplace(BAT *b, BUN p, const void *t,
}
_ptr = BUNtloc(bi, p);
switch (b->twidth) {
- case 1:
+ default: /* only three or four cases possible */
* (uint8_t *) _ptr = (uint8_t) (_d - GDK_VAROFFSET);
break;
case 2:
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -1051,7 +1051,7 @@ BATreplace(BAT *b, BAT *p, BAT *n, bool
var_t d;
switch (b->twidth) {
- case 1:
+ default: /* only three of four cases possible */
d = (var_t) ((uint8_t *) b->theap.base)[updid]
+ GDK_VAROFFSET;
break;
case 2:
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1452,8 +1452,11 @@ BBPinit(void)
/* try to obtain a BBP.dir from bakdir */
if (stat(backupbbpdirstr, &st) == 0) {
/* backup exists; *must* use it */
- if (recover_dir(0, stat(bbpdirstr, &st) == 0) !=
GDK_SUCCEED)
+ if (recover_dir(0, stat(bbpdirstr, &st) == 0) !=
GDK_SUCCEED) {
+ GDKfree(bbpdirstr);
+ GDKfree(backupbbpdirstr);
goto bailout;
+ }
if ((fp = GDKfilelocate(0, "BBP", "r", "dir")) == NULL)
{
GDKfree(bbpdirstr);
GDKfree(backupbbpdirstr);
@@ -1467,8 +1470,11 @@ BBPinit(void)
/* no BBP.bak (nor BBP.dir or BACKUP/BBP.dir):
* create a new one */
IODEBUG fprintf(stderr, "#BBPdir: initializing
BBP.\n"); /* BBPdir instead of BBPinit for backward compatibility of
error messages */
- if (BBPdir(0, NULL) != GDK_SUCCEED)
+ if (BBPdir(0, NULL) != GDK_SUCCEED) {
+ GDKfree(bbpdirstr);
+ GDKfree(backupbbpdirstr);
goto bailout;
+ }
} else if (GDKmove(0, BATDIR, "BBP", "bak", BATDIR,
"BBP", "dir") == GDK_SUCCEED)
IODEBUG fprintf(stderr, "#BBPinit: reverting to
dir saved in BBP.bak.\n");
@@ -1749,14 +1755,14 @@ BBPdir_subcommit(int cnt, bat *subcommit
if ((obbpf = GDKfileopen(0, SUBDIR, "BBP", "dir", "r")) == NULL &&
(obbpf = GDKfileopen(0, BAKDIR, "BBP", "dir", "r")) == NULL) {
GDKerror("BBPdir: subcommit attempted without backup BBP.dir.");
- return GDK_FAIL;
+ goto bailout;
}
/* read first three lines */
if (fgets(buf, sizeof(buf), obbpf) == NULL || /* BBP.dir, GDKversion %d
*/
fgets(buf, sizeof(buf), obbpf) == NULL || /* SIZEOF_SIZE_T
SIZEOF_OID SIZEOF_MAX_INT */
fgets(buf, sizeof(buf), obbpf) == NULL) { /* BBPsize=%d */
GDKerror("BBPdir: subcommit attempted with invalid backup
BBP.dir.");
- return GDK_FAIL;
+ goto bailout;
}
/* third line contains BBPsize */
sscanf(buf, "BBPsize=%d", &n);
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3661,7 +3661,7 @@ leftjoin(BAT **r1p, BAT **r2p, BAT *l, B
}
phash = sr == NULL &&
VIEWtparent(r) != 0 &&
- BATcount(BBPquickdesc(VIEWtparent(r), false)) == BATcount(r);
+ BATcount(BBP_cache(VIEWtparent(r))) == BATcount(r);
return hashjoin(r1p, r2p, l, r, sl, sr,
lstart, lend, lcnt, lcand, lcandend,
rstart, rend, rcnt, rcand, rcandend,
diff --git a/gdk/gdk_project.c b/gdk/gdk_project.c
--- a/gdk/gdk_project.c
+++ b/gdk/gdk_project.c
@@ -333,6 +333,7 @@ BATproject(BAT *l, BAT *r)
/* handle string trick */
if (stringtrick) {
+ assert(r->tvheap);
if (r->batRestricted == BAT_READ) {
/* really share string heap */
assert(r->tvheap->parentid > 0);
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -171,7 +171,8 @@ GDKremovedir(int farmid, const char *dir
}
path = GDKfilepath(farmid, dirname, dent->d_name, NULL);
if (path == NULL) {
- ret = -1;
+ /* most likely the rmdir will now fail causing
+ * an error return */
goto bailout;
}
ret = remove(path);
diff --git a/tools/merovingian/utils/control.c
b/tools/merovingian/utils/control.c
--- a/tools/merovingian/utils/control.c
+++ b/tools/merovingian/utils/control.c
@@ -101,6 +101,7 @@ char* control_send(
continue;
if (connect(sock, rp->ai_addr, (socklen_t)
rp->ai_addrlen) != SOCKET_ERROR)
break; /* success */
+ closesocket(sock);
}
freeaddrinfo(res);
if (rp == NULL) {
@@ -111,7 +112,6 @@ char* control_send(
strerror(errno)
#endif
);
- closesocket(sock);
return(strdup(sbuf));
}
#if !defined(SOCK_CLOEXEC) && defined(HAVE_FCNTL)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list