Changeset: 0fc16ac3c540 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0fc16ac3c540
Modified Files:
        sql/storage/bat/bat_storage.c
Branch: Jan2022
Log Message:

cleanup and test for malloc failures


diffs (84 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -1082,6 +1082,16 @@ segments_is_deleted(segment *s, sql_tran
        return 0;
 }
 
+static sql_delta *
+tr_dup_delta(sql_trans *tr, sql_delta *bat)
+{
+       sql_delta *n = ZNEW(sql_delta);
+       *n = *bat;
+       n->next = NULL;
+       n->cs.ts = tr->tid;
+       return n;
+}
+
 static BAT *
 dict_append_bat(sql_trans *tr, sql_delta **batp, BAT *i)
 {
@@ -1131,11 +1141,11 @@ dict_append_bat(sql_trans *tr, sql_delta
                                        return NULL;
                                }
                                if (cs->ts != tr->tid) {
-                                       *batp = ZNEW(sql_delta);
-                                       **batp = *bat;
-                                       (*batp)->next = NULL;
+                                       if ((*batp = tr_dup_delta(tr, bat)) == 
NULL) {
+                                               bat_destroy(n);
+                                               return NULL;
+                                       }
                                        cs = &(*batp)->cs;
-                                       cs->ts = tr->tid;
                                        new = 1;
                                }
                                if (cs->bid && !new)
@@ -1167,11 +1177,11 @@ dict_append_bat(sql_trans *tr, sql_delta
                                        return NULL;
                                }
                                if (cs->ts != tr->tid) {
-                                       *batp = ZNEW(sql_delta);
-                                       **batp = *bat;
-                                       (*batp)->next = NULL;
+                                       if ((*batp = tr_dup_delta(tr, bat)) == 
NULL) {
+                                               bat_destroy(n);
+                                               return NULL;
+                                       }
                                        cs = &(*batp)->cs;
-                                       cs->ts = tr->tid;
                                        new = 1;
                                        temp_dup(cs->ebid);
                                        if (cs->uibid) {
@@ -1614,11 +1624,11 @@ dict_append_val(sql_trans *tr, sql_delta
                                        return NULL;
                                }
                                if (cs->ts != tr->tid) {
-                                       *batp = ZNEW(sql_delta);
-                                       **batp = *bat;
-                                       (*batp)->next = NULL;
+                                       if ((*batp = tr_dup_delta(tr, bat)) == 
NULL) {
+                                               bat_destroy(n);
+                                               return NULL;
+                                       }
                                        cs = &(*batp)->cs;
-                                       cs->ts = tr->tid;
                                        new = 1;
                                        cs->uibid = cs->uvbid = 0;
                                }
@@ -1646,11 +1656,11 @@ dict_append_val(sql_trans *tr, sql_delta
                                        return NULL;
                                }
                                if (cs->ts != tr->tid) {
-                                       *batp = ZNEW(sql_delta);
-                                       **batp = *bat;
-                                       (*batp)->next = NULL;
+                                       if ((*batp = tr_dup_delta(tr, bat)) == 
NULL) {
+                                               bat_destroy(n);
+                                               return NULL;
+                                       }
                                        cs = &(*batp)->cs;
-                                       cs->ts = tr->tid;
                                        new = 1;
                                        temp_dup(cs->ebid);
                                        if (cs->uibid) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to