From 4502eadc2fbdd6efe2e4702cb3993cac83a59615 Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Thu, 9 Nov 2006 18:17:05 +0000 Subject: [PATCH] * src/files.c (tr): Change return type to void. * src/muscle_tab.c (muscle_insert): Free storage in case muscle_grow has been called previously for the same key. (muscle_find): Return storage instead of value so that --enable-gcc-warnings doesn't produce warnings that the return discards const. aver that the value and storage are the same since storage could potentially be NULL when value is not. * tests/testsuite.at (AT_CHECK): Treat an unspecified exit value the same as 0. --- ChangeLog | 12 ++++++++++++ src/files.c | 2 +- src/muscle_tab.c | 19 ++++++++++++++----- tests/testsuite.at | 2 +- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index f143b6e8..d558baca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2006-11-09 Joel E. Denny + + * src/files.c (tr): Change return type to void. + * src/muscle_tab.c (muscle_insert): Free storage in case muscle_grow + has been called previously for the same key. + (muscle_find): Return storage instead of value so that + --enable-gcc-warnings doesn't produce warnings that the return discards + const. aver that the value and storage are the same since storage + could potentially be NULL when value is not. + * tests/testsuite.at (AT_CHECK): Treat an unspecified exit value the + same as 0. + 2006-11-08 Paul Eggert * bootstrap.conf (excluded_files): Exclude m4/codeset.m4 (undoing diff --git a/src/files.c b/src/files.c index 951a7acc..934e1143 100644 --- a/src/files.c +++ b/src/files.c @@ -137,7 +137,7 @@ xfclose (FILE *ptr) `------------------------------------------------------------------*/ /* In the string S, replace all characters FROM by TO. */ -static char * +static void tr (char *s, char from, char to) { for (; *s; s++) diff --git a/src/muscle_tab.c b/src/muscle_tab.c index 6ceb71f3..70f12dfb 100644 --- a/src/muscle_tab.c +++ b/src/muscle_tab.c @@ -123,9 +123,11 @@ muscle_insert (char const *key, char const *value) entry = xmalloc (sizeof *entry); entry->key = key; hash_insert (muscle_table, entry); - entry->storage = NULL; } + else + free (entry->storage); entry->value = value; + entry->storage = NULL; } @@ -207,9 +209,11 @@ void muscle_pair_list_grow (const char *muscle, obstack_free (&muscle_obstack, pair); } -/*-------------------------------. -| Find the value of muscle KEY. | -`-------------------------------*/ +/*----------------------------------------------------------------------------. +| Find the value of muscle KEY. Abort if muscle_insert was invoked more | +| recently than muscle_grow for KEY since muscle_find can't return a | +| char const *. | +`----------------------------------------------------------------------------*/ char * muscle_find (const char *key) @@ -219,7 +223,12 @@ muscle_find (const char *key) probe.key = key; result = hash_lookup (muscle_table, &probe); - return result ? result->value : NULL; + if (result) + { + aver (result->value == result->storage); + return result->storage; + } + return NULL; } diff --git a/tests/testsuite.at b/tests/testsuite.at index bd5e1169..1f93afdc 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -25,7 +25,7 @@ m4_pushdef([ORIGINAL_AT_CHECK], m4_defn([AT_CHECK])) m4_pushdef([AT_CHECK], [ORIGINAL_AT_CHECK( m4_if(m4_quote(m4_substr(m4_quote($1), 0, 5)), [bison], - m4_if([$2], [0], [], + m4_if([$2], [0], [], [$2], [], [], [[VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; ]]))$@)]) # Testing resistance to user bugs. -- 2.47.2