In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/fe2ce09d592612ace5bf8acccba9db512adb54a5?hp=dc21de0ce42c790f35d2d6062e09e01e787138af>

- Log -----------------------------------------------------------------
commit fe2ce09d592612ace5bf8acccba9db512adb54a5
Author: Tony Cook <t...@develop-help.com>
Date:   Tue May 20 15:06:16 2014 +1000

    bump $PerlIO::via::VERSION to 0.15

M       ext/PerlIO-via/via.pm

commit 3ed3a8afebd64616aef147205403b96b30a4b4ee
Author: Jarkko Hietaniemi <j...@iki.fi>
Date:   Wed Apr 23 12:53:42 2014 -0400

    add va_end() calls where missing for a va_start() or va_end().
    
    Fix for Coverity perl5 CIDs 29225, 29226, 29227, 29228, 29229: Missing
    varargs init or cleanup (VARARGS) missing va_end: va_end was not
    called for foo.
    
    Use of va_args must be finished off with va_end (in other words,
    use of va_start or va_copy must be bracketed off with va_end).
    In most platforms va_end is a no-op, but in some platforms it is
    required for proper cleanup (or face stack smash, or memory leak).
    
    Tony: move va_start() out of the declaration block

M       ext/PerlIO-via/via.xs
M       mathoms.c
M       perlio.c
M       util.c
-----------------------------------------------------------------------

Summary of changes:
 ext/PerlIO-via/via.pm |  2 +-
 ext/PerlIO-via/via.xs |  9 +++++----
 mathoms.c             | 10 ++++++++--
 perlio.c              |  1 +
 util.c                |  1 +
 5 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/ext/PerlIO-via/via.pm b/ext/PerlIO-via/via.pm
index 77586f6..a10f7ee 100644
--- a/ext/PerlIO-via/via.pm
+++ b/ext/PerlIO-via/via.pm
@@ -1,5 +1,5 @@
 package PerlIO::via;
-our $VERSION = '0.14';
+our $VERSION = '0.15';
 require XSLoader;
 XSLoader::load();
 1;
diff --git a/ext/PerlIO-via/via.xs b/ext/PerlIO-via/via.xs
index 619174a..d7a037b 100644
--- a/ext/PerlIO-via/via.xs
+++ b/ext/PerlIO-via/via.xs
@@ -68,15 +68,16 @@ PerlIOVia_method(pTHX_ PerlIO * f, const char *method, CV 
** save, int flags,
                 ...)
 {
     PerlIOVia *s = PerlIOSelf(f, PerlIOVia);
+    SV *result = Nullsv;
     CV *cv =
        (*save) ? *save : PerlIOVia_fetchmethod(aTHX_ s, method, save);
-    SV *result = Nullsv;
-    va_list ap;
-    va_start(ap, flags);
     if (cv != (CV *) - 1) {
        IV count;
        dSP;
        SV *arg;
+        va_list ap;
+
+        va_start(ap, flags);
        PUSHSTACKi(PERLSI_MAGIC);
        ENTER;
        PUSHMARK(sp);
@@ -84,6 +85,7 @@ PerlIOVia_method(pTHX_ PerlIO * f, const char *method, CV ** 
save, int flags,
        while ((arg = va_arg(ap, SV *))) {
            XPUSHs(arg);
        }
+        va_end(ap);
        if (*PerlIONext(f)) {
            if (!s->fh) {
                GV *gv;
@@ -121,7 +123,6 @@ PerlIOVia_method(pTHX_ PerlIO * f, const char *method, CV 
** save, int flags,
        LEAVE;
        POPSTACK;
     }
-    va_end(ap);
     return result;
 }
 
diff --git a/mathoms.c b/mathoms.c
index 73f1e8d..1132ac8 100644
--- a/mathoms.c
+++ b/mathoms.c
@@ -544,6 +544,7 @@ int
 Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
 {
     dTHXs;
+    int ret = 0;
     va_list(arglist);
 
     /* Easier to special case this here than in embed.pl. (Look at what it
@@ -553,7 +554,9 @@ Perl_fprintf_nocontext(PerlIO *stream, const char *format, 
...)
 #endif
 
     va_start(arglist, format);
-    return PerlIO_vprintf(stream, format, arglist);
+    ret = PerlIO_vprintf(stream, format, arglist);
+    va_end(arglist);
+    return ret;
 }
 
 int
@@ -561,13 +564,16 @@ Perl_printf_nocontext(const char *format, ...)
 {
     dTHX;
     va_list(arglist);
+    int ret = 0;
 
 #ifdef PERL_IMPLICIT_CONTEXT
     PERL_ARGS_ASSERT_PRINTF_NOCONTEXT;
 #endif
 
     va_start(arglist, format);
-    return PerlIO_vprintf(PerlIO_stdout(), format, arglist);
+    ret = PerlIO_vprintf(PerlIO_stdout(), format, arglist);
+    va_end(arglist);
+    return ret;
 }
 
 #if defined(HUGE_VAL) || (defined(USE_LONG_DOUBLE) && defined(HUGE_VALL))
diff --git a/perlio.c b/perlio.c
index 03c6513..89b8ee6 100644
--- a/perlio.c
+++ b/perlio.c
@@ -4919,6 +4919,7 @@ PerlIO_vprintf(PerlIO *f, const char *fmt, va_list ap)
     s = SvPV_const(sv, len);
     wrote = PerlIO_write(f, s, len);
     SvREFCNT_dec(sv);
+    va_end(apc);
     return wrote;
 }
 
diff --git a/util.c b/util.c
index b90abe5..4daf01d 100644
--- a/util.c
+++ b/util.c
@@ -4935,6 +4935,7 @@ Perl_my_vsnprintf(char *buffer, const Size_t len, const 
char *format, va_list ap
     retval = vsprintf(buffer, format, ap);
 # endif
 #endif /* #ifdef NEED_VA_COPY */
+    va_end(apc);
     /* vsprintf() shows failure with < 0 */
     if (retval < 0
 #ifdef HAS_VSNPRINTF

--
Perl5 Master Repository

Reply via email to