Changeset: 392795a36b72 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/392795a36b72
Modified Files:
clients/mapiclient/dump.c
clients/mapilib/mapi.c
gdk/gdk_batop.c
gdk/gdk_cand.c
geom/monetdb5/geomBulk.c
monetdb5/mal/mal_client.c
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_session.c
Branch: Aug2024
Log Message:
Various Coverity-inspired fixes.
diffs (180 lines):
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -2251,14 +2251,10 @@ dump_table(Mapi mid, const char *schema,
goto doreturn;
}
for (int64_t i = 0; i < rows; i++) {
- if (mapi_fetch_row(hdl) == 0) {
- mapi_close_handle(hdl);
- fprintf(stderr, "unexepcted error\n");
- goto doreturn;
- }
- tables[i].schema = strdup(mapi_fetch_field(hdl,
0));
- tables[i].table = strdup(mapi_fetch_field(hdl,
1));
- if (tables[i].schema == NULL || tables[i].table
== NULL) {
+ tables[i].schema = tables[i].table = NULL;
+ if (mapi_fetch_row(hdl) == 0 ||
+ (tables[i].schema =
strdup(mapi_fetch_field(hdl, 0))) == NULL ||
+ (tables[i].table =
strdup(mapi_fetch_field(hdl, 1))) == NULL) {
do {
free(tables[i].schema);
free(tables[i].table);
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -1786,12 +1786,6 @@ mapi_new(msettings *settings)
mid = malloc(sizeof(*mid));
if (mid == NULL)
return NULL;
- if (settings == NULL)
- settings = msettings_create();
- if (settings == NULL) {
- free(mid);
- return NULL;
- }
/* then fill in some details */
*mid = MapiStructDefaults;
@@ -1800,6 +1794,13 @@ mapi_new(msettings *settings)
mapi_destroy(mid);
return NULL;
}
+ if (settings == NULL) {
+ settings = msettings_create();
+ if (settings == NULL) {
+ mapi_destroy(mid);
+ return NULL;
+ }
+ }
mid->settings = settings;
mid->blk.buf[0] = 0;
mid->blk.buf[mid->blk.lim] = 0;
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -3066,9 +3066,11 @@ BATcount_no_nil(BAT *b, BAT *s)
hseq = b->hseqbase;
canditer_init(&ci, b, s);
- if (b->tnonil)
+ BATiter bi = bat_iterator(b);
+ if (bi.nonil) {
+ bat_iterator_end(&bi);
return ci.ncand;
- BATiter bi = bat_iterator(b);
+ }
p = bi.base;
t = ATOMbasetype(bi.type);
switch (t) {
diff --git a/gdk/gdk_cand.c b/gdk/gdk_cand.c
--- a/gdk/gdk_cand.c
+++ b/gdk/gdk_cand.c
@@ -846,6 +846,7 @@ canditer_mask_next(const struct canditer
o = 31;
if (p == 0)
return oid_nil;
+ p--;
} else {
o--;
}
diff --git a/geom/monetdb5/geomBulk.c b/geom/monetdb5/geomBulk.c
--- a/geom/monetdb5/geomBulk.c
+++ b/geom/monetdb5/geomBulk.c
@@ -823,10 +823,10 @@ wkbTransform_bat_cand(bat *outBAT_id, ba
GEOSSetSRID_r(geoshandle, transformedGeosGeometry,
*srid_dst);
/* get the wkb */
if ((transformedWKB =
geos2wkb(transformedGeosGeometry)) == NULL)
- throw(MAL, "batgeom.Transform", SQLSTATE(38000)
"Geos operation geos2wkb failed");
+ err = createException(MAL, "batgeom.Transform",
SQLSTATE(38000) "Geos operation geos2wkb failed");
else {
if (BUNappend(outBAT, transformedWKB, false) !=
GDK_SUCCEED) {
- throw(MAL, "batgeom.Transform",
SQLSTATE(HY013) MAL_MALLOC_FAIL);
+ err = createException(MAL,
"batgeom.Transform", SQLSTATE(HY013) MAL_MALLOC_FAIL);
}
}
@@ -842,10 +842,14 @@ wkbTransform_bat_cand(bat *outBAT_id, ba
BBPunfix(inBAT->batCacheid);
if (s)
BBPunfix(s->batCacheid);
- *outBAT_id = outBAT->batCacheid;
- BBPkeepref(outBAT);
+ if (err) {
+ BBPreclaim(outBAT);
+ } else {
+ *outBAT_id = outBAT->batCacheid;
+ BBPkeepref(outBAT);
+ }
- return MAL_SUCCEED;
+ return err;
#endif
}
diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -184,12 +184,12 @@ MCgetClient(int id)
static void
MCresetProfiler(stream *fdout)
{
- if (fdout != maleventstream)
- return;
MT_lock_set(&mal_profileLock);
- maleventstream = NULL;
- profilerStatus = 0;
- profilerMode = 0;
+ if (fdout == maleventstream) {
+ maleventstream = NULL;
+ profilerStatus = 0;
+ profilerMode = 0;
+ }
MT_lock_unset(&mal_profileLock);
}
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -571,6 +571,9 @@ runMALsequence(Client cntxt, MalBlkPtr m
break;
}
+ freeException(ret);
+ ret = MAL_SUCCEED;
+
if (stk->status) {
/* pause procedure from SYSMON */
if (stk->status == 'p') {
@@ -661,8 +664,6 @@ runMALsequence(Client cntxt, MalBlkPtr m
}
}
- freeException(ret);
- ret = MAL_SUCCEED;
switch (pci->token) {
case ASSIGNsymbol:
/* Assignment command
diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c
--- a/monetdb5/mal/mal_session.c
+++ b/monetdb5/mal/mal_session.c
@@ -614,16 +614,13 @@ MALreader(Client c)
* the estimate is more expensive than just counting the lines.
*/
static int
-prepareMalBlk(MalBlkPtr mb, str s)
+prepareMalBlk(MalBlkPtr mb, const char *s)
{
int cnt = STMT_INCREMENT;
- while (s) {
- s = strchr(s, '\n');
- if (s) {
- s++;
+ if (s && *s) {
+ while ((s = strchr(s + 1, '\n')) != NULL)
cnt++;
- }
}
cnt = (int) (cnt * 1.1);
return resizeMalBlk(mb, cnt);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]