Hi Manual,

the unintilized pointer is actually the class name as a c string. From: init.c
/* This function is used when building the class tree used to send
ordinately the +load message to all classes needing it. The tree
is really needed so that superclasses will get the message before
subclasses.


  This tree will contain classes which are being loaded (or have just
  being loaded), and whose super_class pointers have not yet been
  resolved.  This implies that their super_class pointers point to a
  string with the name of the superclass; when the first message is
  sent to the class (/an object of that class) the class links will
  be resolved, which will replace the super_class pointers with
  pointers to the actual superclasses.

  Unfortunately, the tree might also contain classes which had been
  loaded previously, and whose class links have already been
  resolved.

  This function returns the superclass of a class in both cases, and
  can be used to build the determine the class relationships while
  building the tree.
*/
static Class  class_superclass_of_class (Class class)
...

Maybe you could rely on GSObjCRuntime functions (GSObjCSuper) that try handle these oddities.

Cheers,
David


Manuel Guesdon wrote:


Hi,

I've found a very very stange thing:

I wanted to find if class aClass inherit from another class bClass.
When NSLog-ing class, this works, without it doesn't !

Here are some traces:
aClass=0x4156e320                                                                  
(aClass address)

class_get_super_class(aClass)=0x4156d782 (aClass superclass adress)
class_get_super_class(class_get_super_class(aClass))=(null) (aClass superclass superclass adress. It shouldn't
be null !!!!)
aClass=MyClassName (result of NSLog(@"aClass=%@",aClass))


aClass=0x4156e320                                                                 
(aClass address; same as 1st time)
class_get_super_class(aClass)=0x41487400                                (aClass 
superclass adress. It has changed !!)
class_get_super_class(class_get_super_class(aClass))=0x406fcf40 (aClass superclass 
superclass  adress. It's now correct !)!)


Any idea ?


Manuels






_______________________________________________
Bug-gnustep mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-gnustep

Reply via email to