summaryrefslogtreecommitdiff
path: root/scope.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1999-07-12 01:55:15 +0000
committerGurusamy Sarathy <gsar@cpan.org>1999-07-12 01:55:15 +0000
commitc5be433b5c5658093bc9cae4434721a0b63e7a85 (patch)
treeb5e25d83702fd5b6ebb6108c8cdf104a09f97040 /scope.c
parented7ab888f26e9b2a3bcf98806b630e993179f8b4 (diff)
downloadperl-c5be433b5c5658093bc9cae4434721a0b63e7a85.tar.gz
yet more cleanups of the PERL_OBJECT, MULTIPLICITY and USE_THREADS
builds; passing the implicit context is unified among the three flavors; PERL_IMPLICIT_CONTEXT is auto-enabled under all three flavors (see the top of perl.h) for testing; all varargs functions foo() have a va_list-taking variant vfoo() for generating the context-free versions; the PERL_OBJECT build should now be hyper-compatible with CPAN extensions (C++ is totally out of the picture) result has only been tested on Windows TODO: write docs on the THX rationale and idiomatic usage of the Perl API p4raw-id: //depot/perl@3667
Diffstat (limited to 'scope.c')
-rw-r--r--scope.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/scope.c b/scope.c
index 3da5e63fb1..44c3d923a9 100644
--- a/scope.c
+++ b/scope.c
@@ -19,9 +19,19 @@
void *
Perl_default_protect(pTHX_ int *excpt, protect_body_t body, ...)
{
+ void *ret;
+ va_list args;
+ va_start(args, body);
+ ret = vdefault_protect(excpt, body, &args);
+ va_end(args);
+ return ret;
+}
+
+void *
+Perl_vdefault_protect(pTHX_ int *excpt, protect_body_t body, va_list *args)
+{
dTHR;
dJMPENV;
- va_list args;
int ex;
void *ret;
@@ -30,11 +40,8 @@ Perl_default_protect(pTHX_ int *excpt, protect_body_t body, ...)
JMPENV_PUSH(ex);
if (ex)
ret = NULL;
- else {
- va_start(args, body);
- ret = CALL_FPTR(body)(aTHX_ args);
- va_end(args);
- }
+ else
+ ret = CALL_FPTR(body)(aTHX_ *args);
*excpt = ex;
JMPENV_POP;
return ret;