+2006-11-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * 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 <eggert@cs.ucla.edu>
* bootstrap.conf (excluded_files): Exclude m4/codeset.m4 (undoing
`------------------------------------------------------------------*/
/* In the string S, replace all characters FROM by TO. */
-static char *
+static void
tr (char *s, char from, char to)
{
for (; *s; s++)
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;
}
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)
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;
}
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.