comparison lwlib/lw_expr.h @ 339:6138e304ab9a

Revert 3b5a45c6ab92 The speedup fix in 3b5a45c6ab92 contains some sort of bug related to operand manipulation during expression simplification or copying. This leads to crashes that so have have eluded tracing. Revert back to known working version of the code, even though slower, to avoid regressions.
author William Astle <lost@l-w.ca>
date Fri, 08 Aug 2014 12:14:22 -0600
parents 3b5a45c6ab92
children 4130ffdeb5c8
comparison
equal deleted inserted replaced
338:5d401d1eb3e9 339:6138e304ab9a
56 56
57 struct lw_expr_opers 57 struct lw_expr_opers
58 { 58 {
59 lw_expr_t p; 59 lw_expr_t p;
60 struct lw_expr_opers *next; 60 struct lw_expr_opers *next;
61 struct lw_expr_opers *prev;
62 }; 61 };
63 62
64 struct lw_expr_priv 63 struct lw_expr_priv
65 { 64 {
66 int type; // type of term 65 int type; // type of term
67 int value; // integer value 66 int value; // integer value
68 void *value2; // misc pointer value 67 void *value2; // misc pointer value
69 struct lw_expr_opers *operands; // ptr to list of operands (for operators) 68 struct lw_expr_opers *operands; // ptr to list of operands (for operators)
70 struct lw_expr_opers *operand_tail; // ptr to last operand
71 }; 69 };
72 70
73 typedef lw_expr_t lw_expr_fn_t(int t, void *ptr, void *priv); 71 typedef lw_expr_t lw_expr_fn_t(int t, void *ptr, void *priv);
74 typedef lw_expr_t lw_expr_fn2_t(char *var, void *priv); 72 typedef lw_expr_t lw_expr_fn2_t(char *var, void *priv);
75 typedef lw_expr_t lw_expr_fn3_t(char **p, void *priv); 73 typedef lw_expr_t lw_expr_fn3_t(char **p, void *priv);