The hashtable is created on first call to eval_expression with pointers == NULL.
On next calls, the hashtable is cleared, then used again.
The hashtable is freed on exit.
The AND ("&&") takes precedence over the OR ("||").
Before the fix:
>> 1 || 1 && 0
== [0]
After the fix:
>> 1 || 1 && 0
== [1]
Since the "&&" has higher priority, expression is evaluated as:
"1 || (1 && 0)".