diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog index e2d93108abf87ecf8f1675c28c83c71831bc3493..e66df6a9836330acff3e6f7e31c1d40923b0ab5f 100644 --- a/libobjc/ChangeLog +++ b/libobjc/ChangeLog @@ -1,3 +1,15 @@ +2010-10-12 Nicola Pero <nicola.pero@meta-innovation.com> + + * selector.c (sel_getName): Return "<null selector>" for a NULL + argument. + (sel_get_name): Return 0 for a NULL argument. + * objc/runtime.h (sel_getName): Updated documentation. + + * objc-private/hash.h (class_hash_table): Unused declaration + removed. + (module_hash_table): Same. + * objc/deprecated/hash.h: Same changes. + 2010-10-11 Nicola Pero <nicola.pero@meta-innovation.com> * class.c (objc_getClassList): New. diff --git a/libobjc/objc-private/hash.h b/libobjc/objc-private/hash.h index 7c57a4d2589726fccf11f01f833b4fdcdd98830d..ba4c494343816cccd48beffc0cd30e3380cf75a0 100644 --- a/libobjc/objc-private/hash.h +++ b/libobjc/objc-private/hash.h @@ -104,9 +104,6 @@ typedef struct cache } *cache_ptr; -/* Two important hash tables. */ -extern cache_ptr module_hash_table, class_hash_table; - /* Allocate and initialize a hash table. */ cache_ptr objc_hash_new (unsigned int size, diff --git a/libobjc/objc/deprecated/hash.h b/libobjc/objc/deprecated/hash.h index 52ee8c313457fb63714265fb3f1ddb14f02461d8..8b718a4417d295b9e2b76565adbd87c7d3574fc5 100644 --- a/libobjc/objc/deprecated/hash.h +++ b/libobjc/objc/deprecated/hash.h @@ -104,9 +104,6 @@ typedef struct cache } *cache_ptr; -/* Two important hash tables. */ -extern cache_ptr module_hash_table, class_hash_table; - /* Allocate and initialize a hash table. */ cache_ptr objc_hash_new (unsigned int size, diff --git a/libobjc/objc/runtime.h b/libobjc/objc/runtime.h index b15c522235d422613c396684f32b90a0adbb972c..f3a19ec0b237c288e3e8798dc5ced8603bd8e351 100644 --- a/libobjc/objc/runtime.h +++ b/libobjc/objc/runtime.h @@ -168,7 +168,8 @@ object_getClass (id object) /** Implementation: the following functions are in selector.c. */ -/* Return the name of a given selector. */ +/* Return the name of a given selector. If 'selector' is NULL, return + "<null selector>". */ objc_EXPORT const char *sel_getName (SEL selector); /* Return the type of a given selector. diff --git a/libobjc/selector.c b/libobjc/selector.c index 93952fd383446522f8f99ffe7184de9913916988..e51dd20bd9b46daca485f0b12e26a52fbb405318 100644 --- a/libobjc/selector.c +++ b/libobjc/selector.c @@ -293,6 +293,9 @@ const char *sel_getName (SEL selector) { const char *ret; + if (selector == NULL) + return "<null selector>"; + objc_mutex_lock (__objc_runtime_mutex); if ((soffset_decode ((sidx)selector->sel_id) > 0) && (soffset_decode ((sidx)selector->sel_id) <= __objc_selector_max_index)) @@ -306,6 +309,9 @@ const char *sel_getName (SEL selector) /* Traditional GNU Objective-C Runtime API. */ const char *sel_get_name (SEL selector) { + if (selector == NULL) + return 0; + return sel_getName (selector); }