[svn:parrot] r44740 - branches/pcc_hackathon_6Mar10/src/call

allison at svn.parrot.org allison at svn.parrot.org
Sun Mar 7 15:23:31 UTC 2010


Author: allison
Date: Sun Mar  7 15:23:29 2010
New Revision: 44740
URL: https://trac.parrot.org/parrot/changeset/44740

Log:
[pcc] Better handling for empty signatures with only args or only returns.
Empty arg signatures still need to prepend the invocant if there is one.

Modified:
   branches/pcc_hackathon_6Mar10/src/call/args.c

Modified: branches/pcc_hackathon_6Mar10/src/call/args.c
==============================================================================
--- branches/pcc_hackathon_6Mar10/src/call/args.c	Sun Mar  7 12:56:15 2010	(r44739)
+++ branches/pcc_hackathon_6Mar10/src/call/args.c	Sun Mar  7 15:23:29 2010	(r44740)
@@ -758,11 +758,10 @@
     INTVAL       i;
     int          append_pi          = 1;
 
-    if (!sig_len)
-        return call_object;
-
-    parse_signature_string(interp, sig, &arg_flags);
-    VTABLE_set_attr_str(interp, call_object, CONST_STRING(interp, "arg_flags"), arg_flags);
+    if (sig_len) {
+        parse_signature_string(interp, sig, &arg_flags);
+        VTABLE_set_attr_str(interp, call_object, CONST_STRING(interp, "arg_flags"), arg_flags);
+    }
 
     /* Process the varargs list */
     for (i = 0; i < sig_len; ++i) {
@@ -2143,6 +2142,8 @@
             arg_len++;
     }
     ret_len = strlen(signature) - arg_len - 2;
+    if (ret_len < 1)
+        ret_len = 0;
 
     arg_tmp = (char *) malloc(arg_len + 1);
     ret_tmp = (char *) malloc(ret_len + 1);


More information about the parrot-commits mailing list