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

If HEAPextend fails, loading fails.


diffs (26 lines):

diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -686,14 +686,20 @@ BATload_intern(bat i, int lock)
                }
                if (b->batCapacity != (b->T->heap.size >> b->T->shift)) {
                        BUN cap = b->batCapacity;
+                       int h;
                        if (cap < (b->T->heap.size >> b->T->shift)) {
                                cap = (BUN) (b->T->heap.size >> b->T->shift);
                                HEAPDEBUG fprintf(stderr, "#HEAPextend in 
BATload_inter %s " SZFMT " " SZFMT "\n", b->H->heap.filename, b->H->heap.size, 
headsize(b, cap));
-                               HEAPextend(&b->H->heap, headsize(b, cap), 
b->batRestricted == BAT_READ);
+                               h = HEAPextend(&b->H->heap, headsize(b, cap), 
b->batRestricted == BAT_READ);
                                b->batCapacity = cap;
                        } else {
                                HEAPDEBUG fprintf(stderr, "#HEAPextend in 
BATload_intern %s " SZFMT " " SZFMT "\n", b->T->heap.filename, b->T->heap.size, 
tailsize(b, cap));
-                               HEAPextend(&b->T->heap, tailsize(b, cap), 
b->batRestricted == BAT_READ);
+                               h = HEAPextend(&b->T->heap, tailsize(b, cap), 
b->batRestricted == BAT_READ);
+                       }
+                       if (h < 0) {
+                               HEAPfree(&b->H->heap);
+                               HEAPfree(&b->T->heap);
+                               return NULL;
                        }
                }
        } else {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to