summaryrefslogtreecommitdiffstats
path: root/lib/symtab.c
diff options
context:
space:
mode:
authorpaulo <paul@bayleaf.org.uk>2009-12-10 12:45:44 +0000
committerpaulo <paul@bayleaf.org.uk>2009-12-10 12:45:44 +0000
commit1609248ec4d1b31a7daa1cc69d7899779278171e (patch)
tree9c7ab98be168b86a08b87fdfe7a01054d08ae435 /lib/symtab.c
parent95c8696b16fd25c9cf29aad01ff27250c687fd9b (diff)
parente4024f34fc4a72c9d680ea61bf28b10d0cb80854 (diff)
downloadquagga-1609248ec4d1b31a7daa1cc69d7899779278171e.tar.bz2
quagga-1609248ec4d1b31a7daa1cc69d7899779278171e.tar.xz
Merge branch 'master' of ssh://paulo@80.177.246.130/git/quagga.euro-ix into pthreads
Diffstat (limited to 'lib/symtab.c')
-rw-r--r--lib/symtab.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/symtab.c b/lib/symtab.c
index adc21e73..885be426 100644
--- a/lib/symtab.c
+++ b/lib/symtab.c
@@ -880,15 +880,18 @@ symbol_set_value(symbol sym, void* new_value)
{
void* old_value ;
- assert((sym->table != NULL) || (new_value == NULL)) ;
- /* may not set non-NULL value for orphan symbol ! */
-
old_value = sym->value ;
sym->value = new_value ;
- /* Invoke value_call_back (if any). */
- /* Note that the value_call_back may set/unset references and/or */
- /* define/undefine the value. */
+ if (sym->table == NULL) /* watch out for orphans */
+ {
+ assert((new_value == NULL) && (old_value == NULL)) ;
+ return NULL ;
+ } ;
+
+ /* Invoke value_call_back (if any). */
+ /* Note that the value_call_back may set/unset references and/or */
+ /* define/undefine the value. */
if (((sym)->table->value_call_back != NULL)
&& ( (new_value != NULL) || (old_value != NULL) ))
{