[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