diff options
author | Nicola Pero <nicola.pero@meta-innovation.com> | 2010-12-24 20:10:46 +0000 |
---|---|---|
committer | Nicola Pero <nicola@gcc.gnu.org> | 2010-12-24 20:10:46 +0000 |
commit | 9cacfc3eb3244d1f0a17481c75df331cd9d5a749 (patch) | |
tree | 82ccf00b97041686d44ec777ecbed412ef03db12 /libobjc | |
parent | 410644c41a1b10798a0fe442c66f9bf582ecf067 (diff) | |
download | gcc-9cacfc3eb3244d1f0a17481c75df331cd9d5a749.zip gcc-9cacfc3eb3244d1f0a17481c75df331cd9d5a749.tar.gz gcc-9cacfc3eb3244d1f0a17481c75df331cd9d5a749.tar.bz2 |
In libobjc/: 2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com>
In libobjc/:
2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com>
* selector.c (sel_getTypedSelector): Return NULL if given a NULL
argument.
(sel_registerTypedName): Same.
(sel_registerName): Same.
* objc/runtime.h: Updated documentation.
In gcc/testsuite/:
2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com>
* objc.dg/gnu-api-2-sel.m: Test calling sel_getUid,
sel_registerName and sel_registerTypedName with NULL arguments.
Updated the test to work with the Apple runtime as well.
* obj-c++.dg/gnu-api-2-sel.mm: Same change.
From-SVN: r168231
Diffstat (limited to 'libobjc')
-rw-r--r-- | libobjc/ChangeLog | 8 | ||||
-rw-r--r-- | libobjc/objc/runtime.h | 6 | ||||
-rw-r--r-- | libobjc/selector.c | 12 |
3 files changed, 22 insertions, 4 deletions
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog index d8f23f7..f234a26 100644 --- a/libobjc/ChangeLog +++ b/libobjc/ChangeLog @@ -1,5 +1,13 @@ 2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com> + * selector.c (sel_getTypedSelector): Return NULL if given a NULL + argument. + (sel_registerTypedName): Same. + (sel_registerName): Same. + * objc/runtime.h: Updated documentation. + +2010-12-24 Nicola Pero <nicola.pero@meta-innovation.com> + * objc/runtime.h (class_addIvar): Updated documentation. The alignment is actually the log_2 of the alignment in bytes. * ivars.c (class_addIvar): Corresponding change to the diff --git a/libobjc/objc/runtime.h b/libobjc/objc/runtime.h index 9332f7b..551c348 100644 --- a/libobjc/objc/runtime.h +++ b/libobjc/objc/runtime.h @@ -191,14 +191,14 @@ objc_EXPORT SEL sel_getUid (const char *name); you know the types, it is better to call sel_registerTypedName(). If a selector with this name and no types already exists, it is returned. Note that this function should really be called - 'objc_registerSelector'. */ + 'objc_registerSelector'. Return NULL if 'name' is NULL. */ objc_EXPORT SEL sel_registerName (const char *name); /* Register a selector with a given name and types. If a selector with this name and types already exists, it is returned. Note that this function should really be called 'objc_registerTypedSelector', and it's called 'sel_registerTypedName' only for consistency with - 'sel_registerName'. + 'sel_registerName'. Return NULL if 'name' is NULL. Compatibility Note: the Apple/NeXT runtime has untyped selectors, so it does not have this function, which is specific to the GNU @@ -227,7 +227,7 @@ objc_EXPORT SEL * sel_copyTypedSelectorList (const char *name, /* Return a selector with name 'name' and a non-zero type encoding, if any such selector is registered with the runtime. If there is no - such selector, NULL is returned. + such selector, NULL is returned. Return NULL if 'name' is NULL. This is useful if you have the name of the selector, and would really like to get a selector for it that includes the type diff --git a/libobjc/selector.c b/libobjc/selector.c index f8a7f14..4110df2 100644 --- a/libobjc/selector.c +++ b/libobjc/selector.c @@ -357,8 +357,12 @@ SEL sel_getTypedSelector (const char *name) { sidx i; - objc_mutex_lock (__objc_runtime_mutex); + if (name == NULL) + return NULL; + + objc_mutex_lock (__objc_runtime_mutex); + /* Look for a typed selector. */ i = (sidx) objc_hash_value_for_key (__objc_selector_hash, name); if (i != 0) @@ -658,6 +662,9 @@ SEL sel_registerName (const char *name) { SEL ret; + + if (name == NULL) + return NULL; objc_mutex_lock (__objc_runtime_mutex); /* Assume that name is not constant static memory and needs to be @@ -680,6 +687,9 @@ sel_registerTypedName (const char *name, const char *type) { SEL ret; + if (name == NULL) + return NULL; + objc_mutex_lock (__objc_runtime_mutex); /* Assume that name and type are not constant static memory and need to be copied before put into a runtime structure. is_const == |