fix another bug in list handling of environment stack
authorMatthias Braun <matze@braunis.de>
Fri, 16 Nov 2007 21:13:31 +0000 (21:13 +0000)
committerMatthias Braun <matze@braunis.de>
Fri, 16 Nov 2007 21:13:31 +0000 (21:13 +0000)
[r18421]

lextest/numbers/test
parser.c

index 66dd1c4..484c713 100644 (file)
@@ -9,3 +9,4 @@
 0xff
 0123
 00123
+1234567890000000000.0
index c024ade..6c78507 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -505,19 +505,16 @@ static void stack_pop_to(stack_entry_t **stack_ptr, size_t new_top)
                                symbol->declaration = declaration->symbol_next;
                        } else {
                                symbol->declaration = old_declaration;
-                               assert(old_declaration->symbol_next ==
-                                      declaration->symbol_next);
                        }
                } else {
                        declaration_t *iter_last = declaration;
-                       declaration_t *iter      = declaration->next;
+                       declaration_t *iter      = declaration->symbol_next;
                        for( ; iter != NULL; iter_last = iter, iter = iter->symbol_next) {
                                /* replace an entry? */
                                if(iter->namespace == namespace) {
                                        assert(iter_last != NULL);
                                        iter_last->symbol_next = old_declaration;
-                                       assert(old_declaration->symbol_next ==
-                                              declaration->symbol_next);
+                                       old_declaration->symbol_next = iter->symbol_next;
                                        break;
                                }
                        }