Changeset: c82f93caadb0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c82f93caadb0
Modified Files:
monetdb5/mal/mal_interpreter.mx
Branch: Dec2011
Log Message:
Do some extra initialization to previent double frees.
Plus some other extra minor safety measures.
diffs (30 lines):
diff --git a/monetdb5/mal/mal_interpreter.mx b/monetdb5/mal/mal_interpreter.mx
--- a/monetdb5/mal/mal_interpreter.mx
+++ b/monetdb5/mal/mal_interpreter.mx
@@ -1837,6 +1837,7 @@ safeguardStack(Client cntxt, MalBlkPtr m
backup[i].vtype = 0;
backup[i].len = 0;
+ backup[i].val.pval = 0;
garbage[i] = -1;
if (stk->stk[a].vtype == TYPE_bat && getEndOfLife(mb,
a) == stkpc && isNotUsedIn(pci, i + 1, a)) {
garbage[i] = a;
@@ -1852,7 +1853,9 @@ safeguardStack(Client cntxt, MalBlkPtr m
#endif
} else if (i < pci->retc &&
(stk->stk[a].vtype == TYPE_str ||
-
strcmp(BATatoms[stk->stk[a].vtype].name, "blob") == 0)) {
+ (0 < stk->stk[a].vtype &&
+ stk->stk[a].vtype < TYPE_any &&
+
strcmp(BATatoms[stk->stk[a].vtype].name, "blob") == 0))) {
backup[i] = stk->stk[a];
}
}
@@ -2463,6 +2466,7 @@ void garbageElement(Client cntxt, ValPtr
BBPdecref(bid, TRUE);
} else if (strcmp(BATatoms[v->vtype].name, "blob") == 0) {
GDKfree(v->val.pval);
+ v->val.pval = 0;
}
}
/*
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list