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