[svn:parrot] r41662 - branches/pcc_reapply/src/call

bacek at svn.parrot.org bacek at svn.parrot.org
Sun Oct 4 01:36:56 UTC 2009


Author: bacek
Date: Sun Oct  4 01:36:55 2009
New Revision: 41662
URL: https://trac.parrot.org/parrot/changeset/41662

Log:
Fix handling of null CallSignature and "returns"

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

Modified: branches/pcc_reapply/src/call/args.c
==============================================================================
--- branches/pcc_reapply/src/call/args.c	Sun Oct  4 01:26:57 2009	(r41661)
+++ branches/pcc_reapply/src/call/args.c	Sun Oct  4 01:36:55 2009	(r41662)
@@ -583,9 +583,8 @@
                 Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
                         "too few arguments: 0 passed, %d expected",
                         param_count);
-            else
-                return;
         }
+        return;
     }
 
     positional_elements = VTABLE_elements(interp, call_object);
@@ -831,9 +830,8 @@
                 Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
                         "too few arguments: 0 passed, %d expected",
                         param_count);
-            else
-                return;
         }
+        return;
     }
 
     positional_elements = VTABLE_elements(interp, call_object);
@@ -1120,8 +1118,8 @@
                 Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
                         "too many return values: %d passed, 0 expected",
                         raw_return_count);
-            return;
         }
+        return;
     }
     else
         return_list_elements = VTABLE_elements(interp, return_list);
@@ -1242,21 +1240,21 @@
 
     /* A null call object is fine if there are no arguments and no returns. */
     if (PMC_IS_NULL(call_object)) {
-        if (raw_return_count > 0) {
+        if (raw_return_count > 0)
             if (err_check)
                 Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
                         "too many return values: %d passed, 0 expected",
                         raw_return_count);
-        }
         return;
     }
 
     return_list = VTABLE_get_attr_str(interp, call_object, CONST_STRING(interp, "returns"));
     if (PMC_IS_NULL(return_list)) {
-        if (err_check)
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
-                    "too many return values: %d passed, 0 expected",
-                    raw_return_count, return_list_elements);
+        if (raw_return_count > 0)
+            if (err_check)
+                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+                        "too many return values: %d passed, 0 expected",
+                        raw_return_count, return_list_elements);
         return;
     }
     else


More information about the parrot-commits mailing list