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

allison at svn.parrot.org allison at svn.parrot.org
Sat Mar 6 13:54:58 UTC 2010


Author: allison
Date: Sat Mar  6 13:54:56 2010
New Revision: 44703
URL: https://trac.parrot.org/parrot/changeset/44703

Log:
[pcc] Fix compilation and runtime errors.

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	Sat Mar  6 13:03:11 2010	(r44702)
+++ branches/pcc_hackathon_6Mar10/src/call/args.c	Sat Mar  6 13:54:56 2010	(r44703)
@@ -756,6 +756,7 @@
     ASSERT_ARGS(Parrot_pcc_build_sig_object_from_varargs)
     PMC         * type_tuple        = PMCNULL;
     PMC         * arg_flags         = PMCNULL;
+    PMC         * ignored_flags     = PMCNULL;
     PMC         * const call_object = Parrot_pmc_new(interp, enum_class_CallContext);
     const INTVAL sig_len            = strlen(sig);
     INTVAL       in_return_sig      = 0;
@@ -765,13 +766,17 @@
     if (!sig_len)
         return call_object;
 
-    parse_signature_string(interp, sig, &arg_flags, &return_flags);
+    parse_signature_string(interp, sig, &arg_flags, &ignored_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) {
         const INTVAL type = sig[i];
 
+        /* Don't process returns */
+        if (in_return_sig)
+            break;
+
         /* Regular arguments just set the value */
         switch (type) {
           case 'I':
@@ -805,6 +810,7 @@
                 break;
             }
           case '-':
+            in_return_sig = 1;
             break;
           default:
             Parrot_ex_throw_from_c_args(interp, NULL,


More information about the parrot-commits mailing list