This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
libobjc - minor get_imp fix
- From: "Nicola Pero" <nicola dot pero at meta-innovation dot com>
- To: "gcc-patches at gnu dot org" <gcc-patches at gnu dot org>
- Date: Tue, 23 Nov 2010 20:20:55 +0100 (CET)
- Subject: libobjc - minor get_imp fix
Patch from Richard Frith-Macdonald <rfm@gnu.org>. Committed to trunk.
Thanks
Index: sendmsg.c
===================================================================
--- sendmsg.c (revision 167090)
+++ sendmsg.c (working copy)
@@ -189,8 +189,13 @@ get_imp (Class class, SEL sel)
/* The dispatch table has been installed, and the method
is not in the dispatch table. So the method just
doesn't exist for the class. Return the forwarding
- implementation. */
- res = __objc_get_forward_imp ((id)class, sel);
+ implementation. We don't know the receiver (only its
+ class), so we have to pass 'nil' as the first
+ argument. Passing the class as first argument is
+ wrong because the class is not the receiver; it can
+ result in us calling a class method when we want an
+ instance method of the same name. */
+ res = __objc_get_forward_imp (nil, sel);
}
}
}
Index: ChangeLog
===================================================================
--- ChangeLog (revision 167090)
+++ ChangeLog (working copy)
@@ -1,3 +1,9 @@
+2010-11-23 Richard Frith-Macdonald <rfm@gnu.org>
+
+ * sendmsg.c (get_imp): Fixed call to __objc_get_forward_imp to
+ pass nil as the receiver since we don't know the receiver at this
+ point.
+
2010-11-18 Nicola Pero <nicola.pero@meta-innovation.com>
* ivars.c: Include stdlib.h.