67 |
m4_symbol_table * |
m4_symbol_table * |
68 |
m4_symtab_create (size_t size, bool *nuke_trace_bit) |
m4_symtab_create (size_t size, bool *nuke_trace_bit) |
69 |
{ |
{ |
70 |
m4_symbol_table *symtab = XMALLOC (m4_symbol_table, 1); |
NEW (m4_symbol_table, symtab); |
71 |
|
|
72 |
symtab->table = m4_hash_new (size ? size : M4_SYMTAB_DEFAULT_SIZE, |
symtab->table = m4_hash_new (size ? size : M4_SYMTAB_DEFAULT_SIZE, |
73 |
m4_hash_string_hash, m4_hash_string_cmp); |
m4_hash_string_hash, m4_hash_string_cmp); |
163 |
|
|
164 |
if (next->type == M4_SYMBOL_TEXT) |
if (next->type == M4_SYMBOL_TEXT) |
165 |
xfree (m4_get_symbol_value_text (next)); |
xfree (m4_get_symbol_value_text (next)); |
166 |
XFREE (next); |
xfree (next); |
167 |
} |
} |
168 |
else |
else |
169 |
data = next; |
data = next; |
280 |
if (!m4_get_symbol_value (*psymbol)) |
if (!m4_get_symbol_value (*psymbol)) |
281 |
if (*symtab->nuke_trace_bit || !m4_get_symbol_traced (*psymbol)) |
if (*symtab->nuke_trace_bit || !m4_get_symbol_traced (*psymbol)) |
282 |
{ |
{ |
283 |
XFREE (*psymbol); |
DELETE (*psymbol); |
284 |
xfree (m4_hash_remove (symtab->table, name)); |
xfree (m4_hash_remove (symtab->table, name)); |
285 |
} |
} |
286 |
} |
} |
306 |
} |
} |
307 |
if (m4_is_symbol_value_text (stale)) |
if (m4_is_symbol_value_text (stale)) |
308 |
xfree (m4_get_symbol_value_text (stale)); |
xfree (m4_get_symbol_value_text (stale)); |
309 |
XFREE (stale); |
xfree (stale); |
310 |
} |
} |
311 |
} |
} |
312 |
|
|
321 |
assert (hash); |
assert (hash); |
322 |
|
|
323 |
if (SYMBOL_ARG_DEFAULT (token_arg)) |
if (SYMBOL_ARG_DEFAULT (token_arg)) |
324 |
XFREE (SYMBOL_ARG_DEFAULT (token_arg)); |
DELETE (SYMBOL_ARG_DEFAULT (token_arg)); |
325 |
xfree (token_arg); |
xfree (token_arg); |
326 |
xfree (m4_hash_remove (hash, (const char *) name)); |
xfree (m4_hash_remove (hash, (const char *) name)); |
327 |
|
|