ivars.c: Add a check for classes without instance variables...
authorDimitris Papavasiliou <dpapavas@gmail.com>
Fri, 9 Jan 2015 17:55:57 +0000 (17:55 +0000)
committerMike Stump <mrs@gcc.gnu.org>
Fri, 9 Jan 2015 17:55:57 +0000 (17:55 +0000)
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-09  Dimitris Papavasiliou  <dpapavas@gmail.com>

* objc.dg/gnu-api-2-class.m: Add a test case
for the above change.

From-SVN: r219396

gcc/testsuite/ChangeLog
gcc/testsuite/objc.dg/gnu-api-2-class.m
libobjc/ChangeLog
libobjc/ivars.c

index a529f19205936730938f7f0fb7ab44141848fce3..bdae8efa73b980342046e8268a441bac74fba144 100644 (file)
@@ -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.
index 7f9cf861c8abd563e8c491d4531ce615bba4e8d4..341952969e8101fa1f31db160a927ff21388e856 100644 (file)
@@ -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;
index 2e2b543b2dc89d14d60b887772132c344087d40c..a3f31b730231179c05ac7b79153f6fbf57c004bd 100644 (file)
@@ -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.
index dd145360e39da77401dc92ba08511873632621e1..910a09828dbb3d1d1dea7deb11bd547540210cc4 100644 (file)
@@ -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;