Index: src/call/args.c
===================================================================
--- src/call/args.c	(版本 42843)
+++ src/call/args.c	(工作副本)
@@ -939,7 +939,6 @@
 {
     ASSERT_ARGS(fill_params)
     PMC    *named_used_list = PMCNULL;
-    PMC    *arg_sig;
     INTVAL *raw_params;
     INTVAL  param_count     = VTABLE_elements(interp, raw_sig);
     INTVAL  param_index     = 0;
@@ -963,8 +962,6 @@
         return;
     }
 
-    positional_args = VTABLE_elements(interp, call_object);
-    GETATTR_CallSignature_arg_flags(interp, call_object, arg_sig);
     GETATTR_FixedIntegerArray_int_array(interp, raw_sig, raw_params);
 
     /* EXPERIMENTAL! This block adds provisional :call_sig param support on the
@@ -988,6 +985,7 @@
     /* First iterate over positional args and positional parameters. */
     arg_index = 0;
     param_index = 0;
+    positional_args = VTABLE_elements(interp, call_object);
     while (1) {
         INTVAL param_flags;
 
@@ -1169,6 +1167,10 @@
         }
 
         if (arg_index < positional_args) {
+            PMC *arg_sig;
+
+            GETATTR_CallSignature_arg_flags(interp, call_object, arg_sig);
+
             /* We've used up all the positional parameters, but have extra
              * positional args left over. */
             if (VTABLE_get_integer_keyed_int(interp, arg_sig, arg_index) & PARROT_ARG_NAME) {

