aboutsummaryrefslogtreecommitdiff
path: root/libobjc/sendmsg.c
diff options
context:
space:
mode:
authorNicola Pero <nicola@gcc.gnu.org>2002-06-17 17:41:11 +0000
committerNicola Pero <nicola@gcc.gnu.org>2002-06-17 17:41:11 +0000
commitbd8d449d1d953e904fbe12d8b39a4cd09937a0b3 (patch)
tree5355c7b610dceb99f7e865ce21a3ab21276bcdab /libobjc/sendmsg.c
parent97272202aa3752f8a6771332ce2b39d6dc7aceeb (diff)
downloadgcc-bd8d449d1d953e904fbe12d8b39a4cd09937a0b3.zip
gcc-bd8d449d1d953e904fbe12d8b39a4cd09937a0b3.tar.gz
gcc-bd8d449d1d953e904fbe12d8b39a4cd09937a0b3.tar.bz2
Fixed warning from __objc_get_forward_imp not returning a value
From-SVN: r54707
Diffstat (limited to 'libobjc/sendmsg.c')
-rw-r--r--libobjc/sendmsg.c58
1 files changed, 31 insertions, 27 deletions
diff --git a/libobjc/sendmsg.c b/libobjc/sendmsg.c
index b447884..eafecd7 100644
--- a/libobjc/sendmsg.c
+++ b/libobjc/sendmsg.c
@@ -78,33 +78,37 @@ static Method_t search_for_method_in_hierarchy (Class class, SEL sel);
Method_t search_for_method_in_list(MethodList_t list, SEL op);
id nil_method(id, SEL, ...);
-/* Given a selector, return the proper forwarding implementation. */
-__inline__
-IMP
-__objc_get_forward_imp (SEL sel)
-{
- if (__objc_msg_forward)
- {
- IMP result;
- if ((result = __objc_msg_forward (sel)))
- return result;
- }
- else
- {
- const char *t = sel->sel_types;
-
- if (t && (*t == '[' || *t == '(' || *t == '{')
-#ifdef OBJC_MAX_STRUCT_BY_VALUE
- && objc_sizeof_type(t) > OBJC_MAX_STRUCT_BY_VALUE
-#endif
- )
- return (IMP)__objc_block_forward;
- else if (t && (*t == 'f' || *t == 'd'))
- return (IMP)__objc_double_forward;
- else
- return (IMP)__objc_word_forward;
- }
-}
+/* Given a selector, return the proper forwarding implementation. */
+__inline__
+IMP
+__objc_get_forward_imp (SEL sel)
+{
+ /* If a custom forwarding hook was registered, try getting a forwarding
+ * function from it. */
+ if (__objc_msg_forward)
+ {
+ IMP result;
+ if ((result = __objc_msg_forward (sel)) != NULL)
+ return result;
+ }
+
+ /* In all other cases, use the default forwarding functions built using
+ * __builtin_apply and friends. */
+ {
+ const char *t = sel->sel_types;
+
+ if (t && (*t == '[' || *t == '(' || *t == '{')
+#ifdef OBJC_MAX_STRUCT_BY_VALUE
+ && objc_sizeof_type(t) > OBJC_MAX_STRUCT_BY_VALUE
+#endif
+ )
+ return (IMP)__objc_block_forward;
+ else if (t && (*t == 'f' || *t == 'd'))
+ return (IMP)__objc_double_forward;
+ else
+ return (IMP)__objc_word_forward;
+ }
+}
/* Given a class and selector, return the selector's implementation. */
__inline__