Changeset: b853dea74ca4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b853dea74ca4
Modified Files:
        sql/common/sql_changeset.c
        sql/storage/store.c
        sql/storage/store_sequence.c
Branch: Jan2014
Log Message:

After destroying a list, set the list pointer to NULL.
In particular, set the *correct* pointer to NULL.  This fixes crashes
when using the pthreads library for locks (as in our Windows Intel
environment).


diffs (81 lines):

diff --git a/sql/common/sql_changeset.c b/sql/common/sql_changeset.c
--- a/sql/common/sql_changeset.c
+++ b/sql/common/sql_changeset.c
@@ -39,10 +39,14 @@ cs_new(changeset * cs, sql_allocator *sa
 void
 cs_destroy(changeset * cs)
 {
-       if (cs->set)
+       if (cs->set) {
                list_destroy(cs->set);
-       if (cs->dset)
+               cs->set = NULL;
+       }
+       if (cs->dset) {
                list_destroy(cs->dset);
+               cs->dset = NULL;
+       }
 }
 
 void
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -100,6 +100,7 @@ key_destroy(sql_key *k)
                fk->rkey = NULL;
        }
        list_destroy(k->columns);
+       k->columns = NULL;
        if ((k->type == pkey) && (k->t->pkey == (sql_ukey *) k))
                k->t->pkey = NULL;
 }
@@ -110,6 +111,7 @@ idx_destroy(sql_idx * i)
        /* remove idx from schema */
        list_remove_data(i->t->s->idxs, i);
        list_destroy(i->columns);
+       i->columns = NULL;
        if (isTable(i->t))
                store_funcs.destroy_idx(NULL, i);
 }
@@ -119,8 +121,10 @@ trigger_destroy(sql_trigger *tr)
 {
        /* remove trigger from schema */
        list_remove_data(tr->t->s->triggers, tr);
-       if (tr->columns)
+       if (tr->columns) {
                list_destroy(tr->columns);
+               tr->columns = NULL;
+       }
 }
 
 void
@@ -151,6 +155,9 @@ schema_destroy(sql_schema *s)
        list_destroy(s->keys);
        list_destroy(s->idxs);
        list_destroy(s->triggers);
+       s->keys = NULL;
+       s->idxs = NULL;
+       s->triggers = NULL;
 }
 
 /*#define STORE_DEBUG 1*/ 
@@ -2307,7 +2314,7 @@ rollforward_changeset_updates(sql_trans 
                                        ok = rollforward_deletes(tr, tb, mode);
                        }
                        list_destroy(ts->dset);
-                       fs->dset = NULL;
+                       ts->dset = NULL;
                }
        }
        /* changes to the existing bases */
diff --git a/sql/storage/store_sequence.c b/sql/storage/store_sequence.c
--- a/sql/storage/store_sequence.c
+++ b/sql/storage/store_sequence.c
@@ -45,6 +45,7 @@ void sequences_init(void)
 void sequences_exit(void)
 {
        list_destroy(sql_seqs);
+       sql_seqs = NULL;
 }
 
 /* lock is held */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to