diff options
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/gnu-api-2-class.m | 13 | ||||
-rw-r--r-- | libobjc/ChangeLog | 5 | ||||
-rw-r--r-- | libobjc/ivars.c | 2 |
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a529f19..bdae8ef 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-01-09 Dimitris Papavasiliou <dpapavas@gmail.com> + + * objc.dg/gnu-api-2-class.m: Add a test case + for the above change. + 2015-01-09 Sebastian Huber <sebastian.huber@embedded-brains.de> * gcc.dg/typeof-2.c: Add checks for non-atomic types. diff --git a/gcc/testsuite/objc.dg/gnu-api-2-class.m b/gcc/testsuite/objc.dg/gnu-api-2-class.m index 7f9cf86..34195296 100644 --- a/gcc/testsuite/objc.dg/gnu-api-2-class.m +++ b/gcc/testsuite/objc.dg/gnu-api-2-class.m @@ -239,6 +239,19 @@ int main(int argc, void **args) abort (); } + printf ("Testing class_copyIvarList () on class with no instance variables...\n"); + { + unsigned int count; + Ivar * list = class_copyIvarList (objc_getClass ("MyOtherSubClass"), + &count); + + if (count != 0) + abort (); + + if (list != NULL) + abort (); + } + printf ("Testing class_copyMethodList ()...\n"); { unsigned int count; diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog index 2e2b543..a3f31b7 100644 --- a/libobjc/ChangeLog +++ b/libobjc/ChangeLog @@ -1,3 +1,8 @@ +2015-01-09 Dimitris Papavasiliou <dpapavas@gmail.com> + + * ivars.c: Add a check for classes without instance + variables, which have a NULL ivar list pointer. + 2015-01-05 Jakub Jelinek <jakub@redhat.com> Update copyright years. diff --git a/libobjc/ivars.c b/libobjc/ivars.c index dd14536..910a098 100644 --- a/libobjc/ivars.c +++ b/libobjc/ivars.c @@ -179,7 +179,7 @@ struct objc_ivar ** class_copyIvarList (Class class_, unsigned int *numberOfRetu struct objc_ivar **returnValue = NULL; struct objc_ivar_list* ivar_list; - if (class_ == Nil || CLS_IS_IN_CONSTRUCTION (class_)) + if (class_ == Nil || CLS_IS_IN_CONSTRUCTION (class_) || !class_->ivars) { if (numberOfReturnedIvars) *numberOfReturnedIvars = 0; |