Changeset: 27ee07e6c33a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/27ee07e6c33a
Modified Files:
        gdk/ChangeLog.Jan2022
        gdk/gdk_bat.c
        sql/backends/monet5/UDF/pyapi3/pyheader.h
        sql/jdbc/tests/Tests/All
Branch: Jan2022
Log Message:

Merge with Jul2021 branch.


diffs (47 lines):

diff --git a/gdk/ChangeLog.Jan2022 b/gdk/ChangeLog.Jan2022
--- a/gdk/ChangeLog.Jan2022
+++ b/gdk/ChangeLog.Jan2022
@@ -1,6 +1,11 @@
 # ChangeLog file for GDK
 # This file is updated with Maddlog
 
+* Thu Dec  8 2022 Sjoerd Mullender <sjo...@acm.org>
+- When extending a bat failed, the capacity had been updated already and
+  was therefore too large.  This could then later cause a crash.  This has
+  been fixed by only updating the capacity if the extend succeeded.
+
 * Wed Dec  7 2022 Sjoerd Mullender <sjo...@acm.org>
 - A bug was fixed when dealing with copy-on-write memory maps.  These can
   occur for some bats used by the write-ahead log code when they grow
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -516,6 +516,7 @@ gdk_return
 BATextend(BAT *b, BUN newcap)
 {
        size_t theap_size;
+       gdk_return rc = GDK_SUCCEED;
 
        assert(newcap <= BUN_MAX);
        BATcheck(b, GDK_FAIL);
@@ -538,14 +539,17 @@ BATextend(BAT *b, BUN newcap)
        } else {
                theap_size = (size_t) newcap << b->tshift;
        }
-       b->batCapacity = newcap;
 
        if (b->theap->base) {
                TRC_DEBUG(HEAP, "HEAPgrow in BATextend %s %zu %zu\n",
                          b->theap->filename, b->theap->size, theap_size);
-               return HEAPgrow(&b->theaplock, &b->theap, theap_size, 
b->batRestricted == BAT_READ);
+               rc = HEAPgrow(&b->theaplock, &b->theap, theap_size, 
b->batRestricted == BAT_READ);
+               if (rc == GDK_SUCCEED)
+                       b->batCapacity = newcap;
+       } else {
+               b->batCapacity = newcap;
        }
-       return GDK_SUCCEED;
+       return rc;
 }
 
 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to