# HG changeset patch # User William Astle # Date 1339279078 21600 # Node ID fa835b780ffb9dd8b26dcbee67137a5313b58f98 # Parent 07e1fac76321ea44ec3af098160e856cd646f3f7 Fix crash on conditionals with undefined symbols Fix NULL pointer deref when parsing conditionals using undefined symbols. diff -r 07e1fac76321 -r fa835b780ffb lwasm/pseudo.c --- a/lwasm/pseudo.c Sat Jun 09 15:47:22 2012 -0600 +++ b/lwasm/pseudo.c Sat Jun 09 15:57:58 2012 -0600 @@ -1014,7 +1014,8 @@ } e = lwasm_parse_cond(as, p); - lwasm_reduce_expr(as, e); + if (e) + lwasm_reduce_expr(as, e); if (e && lw_expr_intval(e) != 0) { as -> skipcond = 1; @@ -1036,7 +1037,8 @@ } e = lwasm_parse_cond(as, p); - lwasm_reduce_expr(as, e); + if (e) + lwasm_reduce_expr(as, e); if (e && lw_expr_intval(e) == 0) { as -> skipcond = 1; @@ -1059,7 +1061,8 @@ } e = lwasm_parse_cond(as, p); - lwasm_reduce_expr(as, e); + if (e) + lwasm_reduce_expr(as, e); if (e && lw_expr_intval(e) <= 0) { as -> skipcond = 1; @@ -1081,7 +1084,8 @@ } e = lwasm_parse_cond(as, p); - lwasm_reduce_expr(as, e); + if (e) + lwasm_reduce_expr(as, e); if (e && lw_expr_intval(e) < 0) { as -> skipcond = 1; @@ -1103,7 +1107,8 @@ } e = lwasm_parse_cond(as, p); - lwasm_reduce_expr(as, e); + if (e) + lwasm_reduce_expr(as, e); if (e && lw_expr_intval(e) >= 0) { as -> skipcond = 1; @@ -1125,7 +1130,8 @@ } e = lwasm_parse_cond(as, p); - lwasm_reduce_expr(as, e); + if (e) + lwasm_reduce_expr(as, e); if (e && lw_expr_intval(e) > 0) { as -> skipcond = 1;