Changeset: 2a1c1e233324 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2a1c1e233324
Modified Files:
sql/server/rel_optimizer.c
Branch: Dec2011
Log Message:
Perform test and early return before dereferencing incorrectly.
This fixes yet another crash on Solaris.
diffs (27 lines):
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -547,14 +547,19 @@ find_one_rel(list *rels, sql_exp *e)
static int
joinexp_cmp(list *rels, sql_exp *h, sql_exp *key)
{
- sql_rel *h_l = find_rel(rels, h->l);
- sql_rel *h_r = find_rel(rels, h->r);
- sql_rel *key_l = find_rel(rels, key->l);
- sql_rel *key_r = find_rel(rels, key->r);
+ sql_rel *h_l;
+ sql_rel *h_r;
+ sql_rel *key_l;
+ sql_rel *key_r;
assert (!h || !key || (h->type == e_cmp && key->type == e_cmp));
if (is_complex_exp(h->flag) || is_complex_exp(key->flag))
return -1;
+ h_l = find_rel(rels, h->l);
+ h_r = find_rel(rels, h->r);
+ key_l = find_rel(rels, key->l);
+ key_r = find_rel(rels, key->r);
+
if (h_l == key_l && h_r == key_r)
return 0;
if (h_r == key_l && h_l == key_r)
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list