From b962cd0b239656dac5c053e29460de730b8848c5 Mon Sep 17 00:00:00 2001 From: Kresten Krab Thorup Date: Thu, 6 Oct 1994 16:17:38 +0000 Subject: [PATCH] Delay eeing when unarchiving. From-SVN: r8229 --- gcc/objc/archive.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/objc/archive.c b/gcc/objc/archive.c index 71cac4f39b2..f78f7871ecb 100644 --- a/gcc/objc/archive.c +++ b/gcc/objc/archive.c @@ -1427,9 +1427,11 @@ static void __objc_finish_write_root_object(struct objc_typed_stream* stream) static void __objc_finish_read_root_object(struct objc_typed_stream* stream) { node_ptr node; + struct objc_list* free_list; SEL awake_sel = sel_get_any_uid ("awake"); /* resolve object forward references */ + free_list = list_cons(NULL, NULL); for (node = hash_next (stream->object_refs, NULL); node; node = hash_next (stream->object_refs, node)) { @@ -1439,10 +1441,13 @@ static void __objc_finish_read_root_object(struct objc_typed_stream* stream) while(reflist) { *((id*)reflist->head) = object; + if (list_find(&free_list, reflist) == NULL) + free_list = list_cons (reflist, free_list); reflist = reflist->tail; } - list_free (node->value); } + list_mapcar (free_list, free); + list_free (free_list); /* empty object reference table */ hash_delete (stream->object_refs); -- 2.30.2