/* Free a node */
{
if (E) {
+ if (E->Op == EXPR_SYMBOL) {
+ /* Remove the symbol reference */
+ SymDelRef (E->V.Sym, E);
+ }
+ /* Place the symbol into the free nodes list if possible */
if (FreeNodeCount < MAX_FREE_NODES) {
/* Remember this node for later */
E->Left = FreeExprNodes;
if (Root) {
FreeExpr (Root->Left);
FreeExpr (Root->Right);
- if (Root->Op == EXPR_SYMBOL) {
- /* Remove the symbol reference */
- SymDelRef (Root->V.Sym, Root);
- }
FreeExprNode (Root);
}
}
/* SEG - SEG, remove it completely */
FreeExprNode (Left);
FreeExprNode (Right);
- FreeExprNode (Expr);
+ FreeExprNode (Expr);
return 0;
} else {
Expr->Left = Left;
unsigned short Len; /* Length for this fragment */
unsigned char Type; /* Fragment type */
union {
- unsigned char Data [4]; /* Literal values */
+ unsigned char Data[4]; /* Literal values */
ExprNode* Expr; /* Expression */
} V;
};