aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/objc.dg/gnu-api-2-class.m13
-rw-r--r--libobjc/ChangeLog5
-rw-r--r--libobjc/ivars.c2
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;