diff options
author | paulo <paul@bayleaf.org.uk> | 2009-12-10 12:45:44 +0000 |
---|---|---|
committer | paulo <paul@bayleaf.org.uk> | 2009-12-10 12:45:44 +0000 |
commit | 1609248ec4d1b31a7daa1cc69d7899779278171e (patch) | |
tree | 9c7ab98be168b86a08b87fdfe7a01054d08ae435 /lib/symtab.c | |
parent | 95c8696b16fd25c9cf29aad01ff27250c687fd9b (diff) | |
parent | e4024f34fc4a72c9d680ea61bf28b10d0cb80854 (diff) | |
download | quagga-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.c | 15 |
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) )) { |