Changeset: 6f67de7eec86 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6f67de7eec86
Modified Files:
gdk/gdk_aggr.c
gdk/gdk_select.c
Branch: Jan2022
Log Message:
Don't leak on timeout
diffs (88 lines):
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -2929,7 +2929,7 @@ BATgroupavg3combine(BAT *avg, BAT *rem,
n++; \
} \
TIMEOUT_CHECK(timeoffset, \
- TIMEOUT_HANDLER(GDK_FAIL)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout));
\
/* the sum fit, so now we can calculate the average */ \
*avg = n > 0 ? (dbl) sum / n : dbl_nil; \
if (0) { \
@@ -2988,7 +2988,7 @@ BATgroupavg3combine(BAT *avg, BAT *rem,
AVERAGE_ITER_FLOAT(TYPE, x, a, n); \
} \
TIMEOUT_CHECK(timeoffset, \
- TIMEOUT_HANDLER(GDK_FAIL)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
*avg = n > 0 ? a : dbl_nil; \
} while (0)
@@ -3045,10 +3045,9 @@ BATcalcavg(BAT *b, BAT *s, dbl *avg, BUN
AVERAGE_FLOATTYPE(dbl);
break;
default:
- bat_iterator_end(&bi);
GDKerror("average of type %s unsupported.\n",
ATOMname(b->ttype));
- return GDK_FAIL;
+ goto bailout;
}
bat_iterator_end(&bi);
if (scale != 0 && !is_dbl_nil(*avg))
@@ -3056,6 +3055,9 @@ BATcalcavg(BAT *b, BAT *s, dbl *avg, BUN
if (vals)
*vals = (BUN) n;
return GDK_SUCCEED;
+bailout:
+ bat_iterator_end(&bi);
+ return GDK_FAIL;
}
/* ---------------------------------------------------------------------- */
@@ -4664,7 +4666,7 @@ BATcalccovariance_sample(BAT *b1, BAT *b
goto overflow; \
} \
TIMEOUT_CHECK(timeoffset, \
- TIMEOUT_HANDLER(dbl_nil)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout));
\
} while (0)
dbl
@@ -4710,10 +4712,8 @@ BATcalccorrelation(BAT *b1, BAT *b2)
AGGR_CORRELATION_SINGLE(dbl);
break;
default:
- bat_iterator_end(&b1i);
- bat_iterator_end(&b2i);
GDKerror("type (%s) not supported.\n", ATOMname(tp));
- return dbl_nil;
+ goto bailout;
}
bat_iterator_end(&b1i);
bat_iterator_end(&b2i);
@@ -4725,9 +4725,10 @@ BATcalccorrelation(BAT *b1, BAT *b2)
ALGOBATPAR(b1), ALGOBATPAR(b2), GDKusec() - t0);
return aux;
overflow:
+ GDKerror("22003!overflow in calculation.\n");
+ bailout:
bat_iterator_end(&b1i);
bat_iterator_end(&b2i);
- GDKerror("22003!overflow in calculation.\n");
return dbl_nil;
}
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -462,7 +462,7 @@ quickins(oid *dst, BUN cnt, oid o, BAT *
cnt += (TEST) != 0; \
} \
} \
- TIMEOUT_CHECK(timeoffset, TIMEOUT_HANDLER(BUN_NONE)); \
+ TIMEOUT_CHECK(timeoffset, GOTO_LABEL_TIMEOUT_HANDLER(bailout));
\
} while (false)
/* argument list for type-specific core scan select function call */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list