Author: jonathan
Date: Sat Apr 14 16:42:36 2007
New Revision: 18209

Modified:
   trunk/src/inter_call.c

Log:
Fix bug in Parrot_PCCINVOKE. When there was an invocant, the number of 
registers used was not being incremetned, and we were losing the current index 
too.

Modified: trunk/src/inter_call.c
==============================================================================
--- trunk/src/inter_call.c      (original)
+++ trunk/src/inter_call.c      Sat Apr 14 16:42:36 2007
@@ -1411,17 +1411,18 @@
 
     /* second loop through signature to build all index and arg_flag
      * loop also assigns args(up to the ->) to registers */
+    index = -1;
+    seen_arrow = 0;
 
     /* account for passing invocant in-band */
     if (pmc) {
         indexes[0][0] = 0;
         VTABLE_set_integer_keyed_int(interp, sigs[0], 0, PARROT_ARG_PMC);
         CTX_REG_PMC(ctx, 0) = pmc;
+        n_regs_used[seen_arrow * 4 + REGNO_PMC]++;
         index = 0;
     }
 
-    index = -1;
-    seen_arrow = 0;
     for (x = signature; *x != '\0'; x++) {
         /* detect -> separator */
         if (*x == '-') {

Reply via email to