aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornicola <>2001-12-17 17:23:09 +0000
committernicola <>2001-12-17 17:23:09 +0000
commit3c583e195515dfe6e36f21c71f88a94a0f397d2c (patch)
tree4eb905ba4ca8172862a389da922d610ab441b8a7
parent4dfa0b41d845d86f26e0c70ac4498ef6dd331950 (diff)
Fixed bug in loading of categories under certain special circumstances
-rw-r--r--libobjc/ChangeLog8
-rw-r--r--libobjc/init.c6
2 files changed, 11 insertions, 3 deletions
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index 1bce3f81ace..8716284bbfd 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -1,3 +1,11 @@
+Mon Dec 17 17:02:12 2001 Nicola Pero <nicola@brainstorm.co.uk>
+
+ * init.c (__objc_exec_class): Fixed bug in the loop on unclaimed
+ categories - when an unclaimed category was found, the loop was
+ doing two steps forward instead of one, so that in certain cases
+ it was failing to properly load all the categories. (Reported
+ with fix by Alexander Malmberg <alexander@malmberg.org>).
+
2001-11-14 Aldy Hernandez <aldyh@redhat.com>
* encoding.c: Add target_flags.
diff --git a/libobjc/init.c b/libobjc/init.c
index 29ce6393eb7..552a74bb549 100644
--- a/libobjc/init.c
+++ b/libobjc/init.c
@@ -599,9 +599,7 @@ __objc_exec_class (Module_t module)
/* Scan the unclaimed category hash. Attempt to attach any unclaimed
categories to objects. */
- for (cell = &unclaimed_categories;
- *cell;
- ({ if (*cell) cell = &(*cell)->tail; }))
+ for (cell = &unclaimed_categories; *cell; )
{
Category_t category = (*cell)->head;
Class class = objc_lookup_class (category->class_name);
@@ -630,6 +628,8 @@ __objc_exec_class (Module_t module)
only done for root classes. */
__objc_register_instance_methods_to_class(class);
}
+ else
+ cell = &(*cell)->tail;
}
if (unclaimed_proto_list && objc_lookup_class ("Protocol"))