Changeset: d9ba15002029 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d9ba15002029
Modified Files:
        gdk/gdk_utils.c
Branch: Sep2022
Log Message:

Keep environment bats aligned when appending fails.


diffs (24 lines):

diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -272,9 +272,19 @@ GDKsetenv(const char *name, const char *
                                conval ? conval : value, false);
        } else {
                rc = BUNappend(GDKkey, name, false);
-               if (rc == GDK_SUCCEED)
+               if (rc == GDK_SUCCEED) {
                        rc = BUNappend(GDKval, conval ? conval : value, false);
+                       if (rc != GDK_SUCCEED) {
+                               /* undo earlier successful append to
+                                * keep bats aligned (this can't really
+                                * fail, but we must check the result
+                                * anyway) */
+                               if (BUNdelete(GDKkey, GDKkey->hseqbase + 
GDKkey->batCount - 1) != GDK_SUCCEED)
+                                       GDKerror("deleting key failed after 
failed value append");
+                       }
+               }
        }
+       assert(BATcount(GDKval) == BATcount(GDKkey));
        GDKfree(conval);
        return rc;
 }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to