X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=scope.c;h=44c3d923a9775f70ae8fffbd66c03012c412fbb8;hb=ac8eabc1ebb57d426c973b83f7ee5241b2084b4e;hp=3da5e63fb12469e2417ccdc15cf922894c0daa5b;hpb=51371543ca1a75ed152020ad0846b5b8cf11c32f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/scope.c b/scope.c index 3da5e63..44c3d92 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;