Changeset: e05de18eca34 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e05de18eca34
Modified Files:
        gdk/gdk_join.c
Branch: Jul2015
Log Message:

Always check result of BATextend.


diffs (52 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -447,13 +447,12 @@ nomatch(BAT *r1, BAT *r2, BAT *l, BAT *r
        if (must_match) {
                GDKerror("%s(%s,%s) does not hit always => can't use 
fetchjoin.\n",
                         func, BATgetId(l), BATgetId(r));
-               BBPreclaim(r1);
-               BBPreclaim(r2);
-               return GDK_FAIL;
+               goto bailout;
        }
        if (lcand) {
                cnt = (BUN) (lcandend - lcand);
-               BATextend(r1, cnt);
+               if (BATextend(r1, cnt) != GDK_SUCCEED)
+                       goto bailout;
                memcpy(Tloc(r1, BUNfirst(r1)), lcand, (lcandend - lcand) * 
sizeof(oid));
                BATsetcount(r1, cnt);
                r1->tkey = 1;
@@ -470,7 +469,8 @@ nomatch(BAT *r1, BAT *r2, BAT *l, BAT *r
                r1->T->width = 0;
                r1->T->shift = 0;
                r1->tdense = 0;
-               BATextend(r1, cnt);
+               if (BATextend(r1, cnt) != GDK_SUCCEED)
+                       goto bailout;
                BATsetcount(r1, cnt);
                BATseqbase(BATmirror(r1), lstart + l->hseqbase);
        }
@@ -480,7 +480,8 @@ nomatch(BAT *r1, BAT *r2, BAT *l, BAT *r
        r2->T->width = 0;
        r2->T->shift = 0;
        r2->tdense = 0;
-       BATextend(r2, cnt);
+       if (BATextend(r2, cnt) != GDK_SUCCEED)
+               goto bailout;
        BATsetcount(r2, cnt);
        BATseqbase(BATmirror(r2), oid_nil);
        ALGODEBUG fprintf(stderr,
@@ -494,6 +495,11 @@ nomatch(BAT *r1, BAT *r2, BAT *l, BAT *r
                          r2->tsorted ? "-sorted" : "",
                          r2->trevsorted ? "-revsorted" : "");
        return GDK_SUCCEED;
+
+  bailout:
+       BBPreclaim(r1);
+       BBPreclaim(r2);
+       return GDK_FAIL;
 }
 
 static gdk_return
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to