This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU M4 source repository".
http://git.sv.gnu.org/gitweb/?p=m4.git;a=commitdiff;h=8cdf04b3b237b97163652f52b32ecb17679e2a27 The branch, master has been updated via 8cdf04b3b237b97163652f52b32ecb17679e2a27 (commit) from 394083c7c6df499eedb10173ac838aced7d00a34 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8cdf04b3b237b97163652f52b32ecb17679e2a27 Author: Eric Blake <[EMAIL PROTECTED]> Date: Thu Oct 18 10:45:16 2007 -0600 Fix 'm4 -F file -t undefined'. * src/freeze.c (produce_symbol_dump): Skip trace placeholders. * src/freeze.c (dump_symbol_CB): Also skip void symbols. * tests/freeze.at (reloading unknown builtin): Test for this bug. * m4/m4module.h (m4_symtab_apply): Add parameter. * m4/symtab.c (m4_symtab_apply): Ignore trace placeholders when requested. (m4_symtab_delete, symtab_dump): Adjust callers. * modules/m4.c (m4_dump_symbols): Likewise. Signed-off-by: Eric Blake <[EMAIL PROTECTED]> ----------------------------------------------------------------------- Summary of changes: ChangeLog | 12 ++++++++++++ m4/m4module.h | 8 ++++---- m4/symtab.c | 20 +++++++++++++------- modules/m4.c | 4 +--- src/freeze.c | 6 +++--- tests/freeze.at | 4 ++-- 6 files changed, 35 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index e762099..195bde9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2007-10-18 Eric Blake <[EMAIL PROTECTED]> + + Fix 'm4 -F file -t undefined'. + * src/freeze.c (produce_symbol_dump): Skip trace placeholders. + * src/freeze.c (dump_symbol_CB): Also skip void symbols. + * tests/freeze.at (reloading unknown builtin): Test for this bug. + * m4/m4module.h (m4_symtab_apply): Add parameter. + * m4/symtab.c (m4_symtab_apply): Ignore trace placeholders when + requested. + (m4_symtab_delete, symtab_dump): Adjust callers. + * modules/m4.c (m4_dump_symbols): Likewise. + 2007-10-09 Eric Blake <[EMAIL PROTECTED]> Fix regexp regression of 2007-09-29. diff --git a/m4/m4module.h b/m4/m4module.h index 91dcea1..b4693d7 100644 --- a/m4/m4module.h +++ b/m4/m4module.h @@ -196,13 +196,13 @@ extern void m4__module_exit (m4 *); /* --- SYMBOL TABLE MANAGEMENT --- */ -typedef void *m4_symtab_apply_func (m4_symbol_table *symtab, const char *key, - m4_symbol *symbol, void *userdata); +typedef void *m4_symtab_apply_func (m4_symbol_table *, const char *, + m4_symbol *, void *); extern m4_symbol_table *m4_symtab_create (size_t); extern void m4_symtab_delete (m4_symbol_table*); -extern void * m4_symtab_apply (m4_symbol_table*, m4_symtab_apply_func*, - void*); +extern void * m4_symtab_apply (m4_symbol_table*, bool, + m4_symtab_apply_func*, void*); extern m4_symbol *m4_symbol_lookup (m4_symbol_table*, const char *); extern m4_symbol *m4_symbol_pushdef (m4_symbol_table*, diff --git a/m4/symtab.c b/m4/symtab.c index 31de98d..1228a29 100644 --- a/m4/symtab.c +++ b/m4/symtab.c @@ -82,13 +82,19 @@ m4_symtab_delete (m4_symbol_table *symtab) assert (symtab); assert (symtab->table); - m4_symtab_apply (symtab, symbol_destroy_CB, NULL); + m4_symtab_apply (symtab, true, symbol_destroy_CB, NULL); m4_hash_delete (symtab->table); free (symtab); } +/* For every symbol in SYMTAB, execute the callback FUNC with the name + and value of the symbol being visited, and the opaque parameter + USERDATA. Skip undefined symbols that are placeholders for + traceon, unless INCLUDE_TRACE is true. If FUNC returns non-NULL, + abort the iteration and return the same result; otherwise return + NULL when iteration completes. */ void * -m4_symtab_apply (m4_symbol_table *symtab, +m4_symtab_apply (m4_symbol_table *symtab, bool include_trace, m4_symtab_apply_func *func, void *userdata) { m4_hash_iterator *place = NULL; @@ -100,10 +106,10 @@ m4_symtab_apply (m4_symbol_table *symtab, while ((place = m4_get_hash_iterator_next (symtab->table, place))) { - result = (*func) (symtab, - (const char *) m4_get_hash_iterator_key (place), - (m4_symbol *) m4_get_hash_iterator_value (place), - userdata); + m4_symbol *symbol = m4_get_hash_iterator_value (place); + if (symbol->value || include_trace) + result = func (symtab, (const char *) m4_get_hash_iterator_key (place), + symbol, userdata); if (result != NULL) { @@ -700,7 +706,7 @@ static void *dump_symbol_CB (m4_symbol_table *symtab, const char *name, static M4_GNUC_UNUSED void * symtab_dump (m4_symbol_table *symtab) { - return m4_symtab_apply (symtab, dump_symbol_CB, NULL); + return m4_symtab_apply (symtab, true, dump_symbol_CB, NULL); } static void * diff --git a/modules/m4.c b/modules/m4.c index b39c5f2..c4a5c62 100644 --- a/modules/m4.c +++ b/modules/m4.c @@ -332,9 +332,7 @@ m4_dump_symbols (m4 *context, m4_dump_symbol_data *data, int argc, data->size = obstack_room (data->obs) / sizeof (const char *); if (argc == 1) - { - m4_symtab_apply (M4SYMTAB, dump_symbol_CB, data); - } + m4_symtab_apply (M4SYMTAB, false, dump_symbol_CB, data); else { int i; diff --git a/src/freeze.c b/src/freeze.c index d107244..9eca014 100644 --- a/src/freeze.c +++ b/src/freeze.c @@ -151,7 +151,7 @@ produce_module_dump (FILE *file, m4_module *module) static void produce_symbol_dump (m4 *context, FILE *file, m4_symbol_table *symtab) { - if (m4_symtab_apply (symtab, dump_symbol_CB, file)) + if (m4_symtab_apply (symtab, false, dump_symbol_CB, file)) assert (false); } @@ -236,7 +236,7 @@ produce_frozen_state (m4 *context, const char *name) produce_mem_dump (file, M4SYNTAX->lquote.string, M4SYNTAX->lquote.length); produce_mem_dump (file, M4SYNTAX->rquote.string, - M4SYNTAX->rquote.length); + M4SYNTAX->rquote.length); fputc ('\n', file); } @@ -483,7 +483,7 @@ reload_frozen_state (m4 *context, const char *name) else m4__module_open (context, "gnu", NULL); /* Disable { and } categories, since ${11} was not supported in - 1.4.x. */ + 1.4.x. */ m4_set_syntax (M4SYNTAX, 'O', '+', "{}"); break; default: diff --git a/tests/freeze.at b/tests/freeze.at index 924d9ff..530553a 100644 --- a/tests/freeze.at +++ b/tests/freeze.at @@ -322,8 +322,8 @@ AT_KEYWORDS([frozen]) AT_DATA([[empty.m4]]) -# Freeze default state. -AT_CHECK_M4([-F frozen.m4f empty.m4]) +# Freeze default state. Also check for bug fixed 18 Oct, 2007. +AT_CHECK_M4([-F frozen.m4f -t undefined empty.m4]) # Add an unknown builtin. echo 'F1,1' >> frozen.m4f hooks/post-receive -- GNU M4 source repository
