This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix miniperl build with threaded perl
[perl5.git] / perlio.c
index 69186ce..e36a730 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -66,7 +66,7 @@ int mkstemp(char*);
 /* Call the callback or PerlIOBase, and return failure. */
 #define Perl_PerlIO_or_Base(f, callback, base, failure, args)  \
        if (PerlIOValid(f)) {                                   \
-               const PerlIO_funcs *tab = PerlIOBase(f)->tab;   \
+               const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
                if (tab && tab->callback)                       \
                        return (*tab->callback) args;           \
                else                                            \
@@ -79,7 +79,7 @@ int mkstemp(char*);
 /* Call the callback or fail, and return failure. */
 #define Perl_PerlIO_or_fail(f, callback, failure, args)        \
        if (PerlIOValid(f)) {                                   \
-               const PerlIO_funcs *tab = PerlIOBase(f)->tab;   \
+               const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
                if (tab && tab->callback)                       \
                        return (*tab->callback) args;           \
                SETERRNO(EINVAL, LIB_INVARG);                   \
@@ -91,7 +91,7 @@ int mkstemp(char*);
 /* Call the callback or PerlIOBase, and be void. */
 #define Perl_PerlIO_or_Base_void(f, callback, base, args)      \
        if (PerlIOValid(f)) {                                   \
-               const PerlIO_funcs *tab = PerlIOBase(f)->tab;   \
+               const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
                if (tab && tab->callback)                       \
                        (*tab->callback) args;                  \
                else                                            \
@@ -103,7 +103,7 @@ int mkstemp(char*);
 /* Call the callback or fail, and be void. */
 #define Perl_PerlIO_or_fail_void(f, callback, args)            \
        if (PerlIOValid(f)) {                                   \
-               const PerlIO_funcs *tab = PerlIOBase(f)->tab;   \
+               const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
                if (tab && tab->callback)                       \
                        (*tab->callback) args;                  \
                else                                            \
@@ -163,9 +163,9 @@ perlsio_binmode(FILE *fp, int iotype, int mode)
     else
        return 0;
 #  else
-    (void)fp;
-    (void)iotype;
-    (void)mode;
+    PERL_UNUSED_ARG(fp);
+    PERL_UNUSED_ARG(iotype);
+    PERL_UNUSED_ARG(mode);
     return 1;
 #  endif
 #endif
@@ -248,9 +248,9 @@ int
 PerlIO_binmode(pTHX_ PerlIO *fp, int iotype, int mode, const char *names)
 {
 #ifdef USE_SFIO
-    (void)iotype;
-    (void)mode;
-    (void)names;
+    PERL_UNUSED_ARG(iotype);
+    PERL_UNUSED_ARG(mode);
+    PERL_UNUSED_ARG(names);
     return 1;
 #else
     return perlsio_binmode(fp, iotype, mode);
@@ -270,7 +270,7 @@ PerlIO_fdupopen(pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags)
     return win32_fdupopen(f);
 #else
     if (f) {
-       int fd = PerlLIO_dup(PerlIO_fileno(f));
+       const int fd = PerlLIO_dup(PerlIO_fileno(f));
        if (fd >= 0) {
            char mode[8];
            int omode = fcntl(fd, F_GETFL);
@@ -308,7 +308,7 @@ PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd,
        if (*args == &PL_sv_undef)
            return PerlIO_tmpfile();
        else {
-           const char *name = SvPV_nolen(*args);
+           const char *name = SvPV_nolen_const(*args);
            if (*mode == IoTYPE_NUMERIC) {
                fd = PerlLIO_open3(name, imode, perm);
                if (fd >= 0)
@@ -334,7 +334,7 @@ XS(XS_PerlIO__Layer__find)
     if (items < 2)
        Perl_croak(aTHX_ "Usage class->find(name[,load])");
     else {
-       const char *name = SvPV_nolen(ST(1));
+       const char *name = SvPV_nolen_const(ST(1));
        ST(0) = (strEQ(name, "crlf")
                 || strEQ(name, "raw")) ? &PL_sv_yes : &PL_sv_undef;
        XSRETURN(1);
@@ -484,7 +484,7 @@ PerlIO_debug(const char *fmt, ...)
                       (IV) CopLINE(PL_curcop));
        Perl_sv_vcatpvf(aTHX_ sv, fmt, &ap);
 
-       s = SvPV(sv, len);
+       s = SvPV_const(sv, len);
        PerlLIO_write(PL_perlio_debug_fd, s, len);
        SvREFCNT_dec(sv);
 #endif
@@ -521,7 +521,7 @@ PerlIO_allocate(pTHX)
            }
        }
     }
-    Newz('I',f,PERLIO_TABLE_SIZE,PerlIO);
+    Newxz(f,PERLIO_TABLE_SIZE,PerlIO);
     if (!f) {
        return NULL;
     }
@@ -571,7 +571,7 @@ PerlIO_list_t *
 PerlIO_list_alloc(pTHX)
 {
     PerlIO_list_t *list;
-    Newz('L', list, 1, PerlIO_list_t);
+    Newxz(list, 1, PerlIO_list_t);
     list->refcnt = 1;
     return list;
 }
@@ -603,7 +603,7 @@ PerlIO_list_push(pTHX_ PerlIO_list_t *list, PerlIO_funcs *funcs, SV *arg)
        if (list->array)
            Renew(list->array, list->len, PerlIO_pair_t);
        else
-           New('l', list->array, list->len, PerlIO_pair_t);
+           Newx(list->array, list->len, PerlIO_pair_t);
     }
     p = &(list->array[list->cur++]);
     p->funcs = funcs;
@@ -650,6 +650,9 @@ PerlIO_clone(pTHX_ PerlInterpreter *proto, CLONE_PARAMS *param)
                f++;
            }
        }
+#else
+    PERL_UNUSED_ARG(proto);
+    PERL_UNUSED_ARG(param);
 #endif
 }
 
@@ -744,7 +747,7 @@ PerlIO_find_layer(pTHX_ const char *name, STRLEN len, int load)
     if ((SSize_t) len <= 0)
        len = strlen(name);
     for (i = 0; i < PL_known_layers->cur; i++) {
-       PerlIO_funcs *f = PL_known_layers->array[i].funcs;
+       PerlIO_funcs * const f = PL_known_layers->array[i].funcs;
        if (memEQ(f->name, name, len) && f->name[len] == 0) {
            PerlIO_debug("%.*s => %p\n", (int) len, name, (void*)f);
            return f;
@@ -756,14 +759,14 @@ PerlIO_find_layer(pTHX_ const char *name, STRLEN len, int load)
            Perl_croak(aTHX_ "Recursive call to Perl_load_module in PerlIO_find_layer");
            return NULL;
        } else {
-           SV *pkgsv = newSVpvn("PerlIO", 6);
-           SV *layer = newSVpvn(name, len);
-           CV *cv  = get_cv("PerlIO::Layer::NoWarnings", FALSE);
-           ENTER;
+           SV * const pkgsv = newSVpvn("PerlIO", 6);
+           SV * const layer = newSVpvn(name, len);
+           CV * const cv    = get_cv("PerlIO::Layer::NoWarnings", FALSE);
+           ENTER;
            SAVEINT(PL_in_load_module);
            if (cv) {
                SAVEGENERICSV(PL_warnhook);
-               SvREFCNT_inc(cv);
+               (void)SvREFCNT_inc(cv);
                PL_warnhook = (SV *) cv;
            }
            PL_in_load_module++;
@@ -844,7 +847,7 @@ XS(XS_io_MODIFY_SCALAR_ATTRIBUTES)
     Perl_warn(aTHX_ "attrib %" SVf, sv);
     for (i = 2; i < items; i++) {
        STRLEN len;
-       const char *name = SvPV(ST(i), len);
+       const char *name = SvPV_const(ST(i), len);
        SV *layer = PerlIO_find_layer(aTHX_ name, len, 1);
        if (layer) {
            av_push(av, SvREFCNT_inc(layer));
@@ -863,8 +866,8 @@ XS(XS_io_MODIFY_SCALAR_ATTRIBUTES)
 SV *
 PerlIO_tab_sv(pTHX_ PerlIO_funcs *tab)
 {
-    HV *stash = gv_stashpv("PerlIO::Layer", TRUE);
-    SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(tab))), stash);
+    HV * const stash = gv_stashpv("PerlIO::Layer", TRUE);
+    SV * const sv = sv_bless(newRV_noinc(newSViv(PTR2IV(tab))), stash);
     return sv;
 }
 
@@ -875,7 +878,7 @@ XS(XS_PerlIO__Layer__NoWarnings)
      */
     dXSARGS;
     if (items)
-       PerlIO_debug("warning:%s\n",SvPV_nolen(ST(0)));
+       PerlIO_debug("warning:%s\n",SvPV_nolen_const(ST(0)));
     XSRETURN(0);
 }
 
@@ -886,9 +889,9 @@ XS(XS_PerlIO__Layer__find)
        Perl_croak(aTHX_ "Usage class->find(name[,load])");
     else {
        STRLEN len;
-       const char *name = SvPV(ST(1), len);
+       const char * const name = SvPV_const(ST(1), len);
        const bool load = (items > 2) ? SvTRUE(ST(2)) : 0;
-       PerlIO_funcs *layer = PerlIO_find_layer(aTHX_ name, len, load);
+       PerlIO_funcs * const layer = PerlIO_find_layer(aTHX_ name, len, load);
        ST(0) =
            (layer) ? sv_2mortal(PerlIO_tab_sv(aTHX_ layer)) :
            &PL_sv_undef;
@@ -976,8 +979,7 @@ PerlIO_parse_layers(pTHX_ PerlIO_list_t *av, const char *names)
                    }
                }
                if (e > s) {
-                   const bool warn_layer = ckWARN(WARN_LAYER);
-                   PerlIO_funcs *layer =
+                   PerlIO_funcs * const layer =
                        PerlIO_find_layer(aTHX_ s, llen, 1);
                    if (layer) {
                        PerlIO_list_push(aTHX_ av, layer,
@@ -986,7 +988,7 @@ PerlIO_parse_layers(pTHX_ PerlIO_list_t *av, const char *names)
                                         &PL_sv_undef);
                    }
                    else {
-                       if (warn_layer)
+                       if (ckWARN(WARN_LAYER))
                            Perl_warner(aTHX_ packWARN(WARN_LAYER), "Unknown PerlIO layer \"%.*s\"",
                                  (int) llen, s);
                        return -1;
@@ -1036,9 +1038,9 @@ PerlIO_layer_fetch(pTHX_ PerlIO_list_t *av, IV n, PerlIO_funcs *def)
 IV
 PerlIOPop_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab)
 {
-    (void)mode;
-    (void)arg;
-    (void)tab;
+    PERL_UNUSED_ARG(mode);
+    PERL_UNUSED_ARG(arg);
+    PERL_UNUSED_ARG(tab);
     if (PerlIOValid(f)) {
        PerlIO_flush(f);
        PerlIO_pop(aTHX_ f);
@@ -1132,7 +1134,7 @@ Perl_boot_core_PerlIO(pTHX)
 PerlIO_funcs *
 PerlIO_default_layer(pTHX_ I32 n)
 {
-    PerlIO_list_t *av = PerlIO_default_layers(aTHX);
+    PerlIO_list_t * const av = PerlIO_default_layers(aTHX);
     if (n < 0)
        n += av->cur;
     return PerlIO_layer_fetch(aTHX_ av, n, PERLIO_FUNCS_CAST(&PerlIO_stdio));
@@ -1160,12 +1162,12 @@ PerlIO_push(pTHX_ PerlIO *f, PERLIO_FUNCS_DECL(*tab), const char *mode, SV *arg)
        Perl_croak(aTHX_ "Layer does not match this perl");
     }
     if (tab->size) {
-       PerlIOl *l = NULL;
+       PerlIOl *l;
        if (tab->size < sizeof(PerlIOl)) {
            goto mismatch;
        }
        /* Real layer with a data area */
-       Newc('L',l,tab->size,char,PerlIOl);
+       Newxc(l,tab->size,char,PerlIOl);
        if (l && f) {
            Zero(l, tab->size, char);
            l->next = *f;
@@ -1213,9 +1215,9 @@ PerlIOBase_binmode(pTHX_ PerlIO *f)
 IV
 PerlIORaw_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab)
 {
-    (void)mode;
-    (void)arg;
-    (void)tab;
+    PERL_UNUSED_ARG(mode);
+    PERL_UNUSED_ARG(arg);
+    PERL_UNUSED_ARG(tab);
 
     if (PerlIOValid(f)) {
        PerlIO *t;
@@ -1257,7 +1259,7 @@ PerlIO_apply_layera(pTHX_ PerlIO *f, const char *mode,
 {
     int code = 0;
     while (n < max) {
-       PerlIO_funcs *tab = PerlIO_layer_fetch(aTHX_ layers, n, NULL);
+       PerlIO_funcs * const tab = PerlIO_layer_fetch(aTHX_ layers, n, NULL);
        if (tab) {
            if (!PerlIO_push(aTHX_ f, tab, mode, PerlIOArg)) {
                code = -1;
@@ -1274,7 +1276,7 @@ PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, const char *names)
 {
     int code = 0;
     if (f && names) {
-       PerlIO_list_t *layers = PerlIO_list_alloc(aTHX);
+       PerlIO_list_t * const layers = PerlIO_list_alloc(aTHX);
        code = PerlIO_parse_layers(aTHX_ layers, names);
        if (code == 0) {
            code = PerlIO_apply_layera(aTHX_ f, mode, layers, 0, layers->cur);
@@ -1349,7 +1351,7 @@ int
 PerlIO__close(pTHX_ PerlIO *f)
 {
     if (PerlIOValid(f)) {
-       PerlIO_funcs *tab = PerlIOBase(f)->tab;
+       PerlIO_funcs * const tab = PerlIOBase(f)->tab;
        if (tab && tab->Close)
            return (*tab->Close)(aTHX_ f);
        else
@@ -1388,7 +1390,7 @@ PerlIO_context_layers(pTHX_ const char *mode)
        SV *layers = PL_curcop->cop_io;
        if (layers) {
            STRLEN len;
-           type = SvPV(layers, len);
+           type = SvPV_const(layers, len);
            if (type && mode[0] != 'r') {
                /*
                 * Skip to write part
@@ -1443,7 +1445,7 @@ PerlIO_resolve_layers(pTHX_ const char *layers,
         * for it
         */
        if (SvROK(arg) && !sv_isobject(arg)) {
-           PerlIO_funcs *handler = PerlIO_layer_from_ref(aTHX_ SvRV(arg));
+           PerlIO_funcs * const handler = PerlIO_layer_from_ref(aTHX_ SvRV(arg));
            if (handler) {
                def = PerlIO_list_alloc(aTHX);
                PerlIO_list_push(aTHX_ def, handler, &PL_sv_undef);
@@ -1510,7 +1512,7 @@ PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd,
            PerlIOl *l = *f;
            layera = PerlIO_list_alloc(aTHX);
            while (l) {
-               SV *arg = (l->tab->Getarg)
+               SV * const arg = (l->tab->Getarg)
                        ? (*l->tab->Getarg) (aTHX_ &l, NULL, 0)
                        : &PL_sv_undef;
                PerlIO_list_push(aTHX_ layera, l->tab, arg);
@@ -1528,7 +1530,7 @@ PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd,
         */
        n = layera->cur - 1;
        while (n >= 0) {
-           PerlIO_funcs *t = PerlIO_layer_fetch(aTHX_ layera, n, NULL);
+           PerlIO_funcs * const t = PerlIO_layer_fetch(aTHX_ layera, n, NULL);
            if (t && t->Open) {
                tab = t;
                break;
@@ -1707,7 +1709,7 @@ int
 PerlIO_has_base(PerlIO *f)
 {
      if (PerlIOValid(f)) {
-          const PerlIO_funcs *tab = PerlIOBase(f)->tab;
+         const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
 
          if (tab)
               return (tab->Get_base != NULL);
@@ -1723,7 +1725,7 @@ int
 PerlIO_fast_gets(PerlIO *f)
 {
     if (PerlIOValid(f) && (PerlIOBase(f)->flags & PERLIO_F_FASTGETS)) {
-        const PerlIO_funcs *tab = PerlIOBase(f)->tab;
+        const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
 
         if (tab)
              return (tab->Set_ptrcnt != NULL);
@@ -1739,7 +1741,7 @@ int
 PerlIO_has_cntptr(PerlIO *f)
 {
     if (PerlIOValid(f)) {
-       const PerlIO_funcs *tab = PerlIOBase(f)->tab;
+       const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
 
        if (tab)
             return (tab->Get_ptr != NULL && tab->Get_cnt != NULL);
@@ -1755,7 +1757,7 @@ int
 PerlIO_canset_cnt(PerlIO *f)
 {
     if (PerlIOValid(f)) {
-         const PerlIO_funcs *tab = PerlIOBase(f)->tab;
+         const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
 
          if (tab)
               return (tab->Set_ptrcnt != NULL);
@@ -1812,8 +1814,8 @@ Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR * ptr, int cnt)
 IV
 PerlIOUtf8_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab)
 {
-    (void)mode;
-    (void)arg;
+    PERL_UNUSED_ARG(mode);
+    PERL_UNUSED_ARG(arg);
     if (PerlIOValid(f)) {
        if (tab->kind & PERLIO_K_UTF8)
            PerlIOBase(f)->flags |= PERLIO_F_UTF8;
@@ -1891,8 +1893,8 @@ PerlIORaw_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers,
               IV n, const char *mode, int fd, int imode, int perm,
               PerlIO *old, int narg, SV **args)
 {
-    PerlIO_funcs *tab = PerlIO_default_btm();
-    (void)self;
+    PerlIO_funcs * const tab = PerlIO_default_btm();
+    PERL_UNUSED_ARG(self);
     if (tab && tab->Open)
         return (*tab->Open) (aTHX_ tab, layers, n - 1, mode, fd, imode, perm,
                              old, narg, args);
@@ -1979,7 +1981,7 @@ IV
 PerlIOBase_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab)
 {
     PerlIOl * const l = PerlIOBase(f);
-    (void)arg;
+    PERL_UNUSED_ARG(arg);
 
     l->flags &= ~(PERLIO_F_CANREAD | PERLIO_F_CANWRITE |
                  PERLIO_F_TRUNCATE | PERLIO_F_APPEND);
@@ -2037,7 +2039,7 @@ PerlIOBase_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab)
 IV
 PerlIOBase_popped(pTHX_ PerlIO *f)
 {
-    (void)f;
+    PERL_UNUSED_ARG(f);
     return 0;
 }
 
@@ -2088,14 +2090,14 @@ PerlIOBase_read(pTHX_ PerlIO *f, void *vbuf, Size_t count)
 IV
 PerlIOBase_noop_ok(pTHX_ PerlIO *f)
 {
-    (void)f;
+    PERL_UNUSED_ARG(f);
     return 0;
 }
 
 IV
 PerlIOBase_noop_fail(pTHX_ PerlIO *f)
 {
-    (void)f;
+    PERL_UNUSED_ARG(f);
     return -1;
 }
 
@@ -2178,6 +2180,7 @@ PerlIO_sv_dup(pTHX_ SV *arg, CLONE_PARAMS *param)
        return newSVsv(arg);
     }
 #else
+    PERL_UNUSED_ARG(param);
     return newSVsv(arg);
 #endif
 }
@@ -2185,7 +2188,7 @@ PerlIO_sv_dup(pTHX_ SV *arg, CLONE_PARAMS *param)
 PerlIO *
 PerlIOBase_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags)
 {
-    PerlIO *nexto = PerlIONext(o);
+    PerlIO * const nexto = PerlIONext(o);
     if (PerlIOValid(nexto)) {
        const PerlIO_funcs * const tab = PerlIOBase(nexto)->tab;
        if (tab && tab->Dup)
@@ -2443,7 +2446,7 @@ PerlIOUnix_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers,
            perm = 0666;
        }
        if (imode != -1) {
-           const char *path = SvPV_nolen(*args);
+           const char *path = SvPV_nolen_const(*args);
            fd = PerlLIO_open3(path, imode, perm);
        }
     }
@@ -2507,7 +2510,7 @@ PerlIOUnix_read(pTHX_ PerlIO *f, void *vbuf, Size_t count)
        return 0;
     }
     while (1) {
-       SSize_t len = PerlLIO_read(fd, vbuf, count);
+       const SSize_t len = PerlLIO_read(fd, vbuf, count);
        if (len >= 0 || errno != EINTR) {
            if (len < 0) {
                if (errno != EAGAIN) {
@@ -2522,6 +2525,7 @@ PerlIOUnix_read(pTHX_ PerlIO *f, void *vbuf, Size_t count)
        }
        PERL_ASYNC_CHECK();
     }
+    /*NOTREACHED*/
 }
 
 SSize_t
@@ -2544,6 +2548,7 @@ PerlIOUnix_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count)
        }
        PERL_ASYNC_CHECK();
     }
+    /*NOTREACHED*/
 }
 
 Off_t
@@ -2662,7 +2667,7 @@ PerlIOStdio_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab
 {
     PerlIO *n;
     if (PerlIOValid(f) && PerlIOValid(n = PerlIONext(f))) {
-        PerlIO_funcs *toptab = PerlIOBase(n)->tab;
+       PerlIO_funcs * const toptab = PerlIOBase(n)->tab;
         if (toptab == tab) {
            /* Top is already stdio - pop self (duplicate) and use original */
            PerlIO_pop(aTHX_ f);
@@ -2731,7 +2736,7 @@ PerlIOStdio_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers,
 {
     char tmode[8];
     if (PerlIOValid(f)) {
-       const char *path = SvPV_nolen(*args);
+       const char *path = SvPV_nolen_const(*args);
        PerlIOStdio *s = PerlIOSelf(f, PerlIOStdio);
        FILE *stdio;
        PerlIOUnix_refcnt_dec(fileno(s->stdio));
@@ -2745,7 +2750,7 @@ PerlIOStdio_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers,
     }
     else {
        if (narg > 0) {
-           const char *path = SvPV_nolen(*args);
+           const char *path = SvPV_nolen_const(*args);
            if (*mode == IoTYPE_NUMERIC) {
                mode++;
                fd = PerlLIO_open3(path, imode, perm);
@@ -2946,6 +2951,7 @@ PerlIOStdio_invalidate_fileno(pTHX_ FILE *f)
      */
 #    error "Don't know how to set FILE.fileno on your platform"
 #endif
+    PERL_UNUSED_ARG(f);
     return 0;
 #  endif
 }
@@ -3874,7 +3880,7 @@ PerlIOBuf_get_base(pTHX_ PerlIO *f)
     if (!b->buf) {
        if (!b->bufsiz)
            b->bufsiz = 4096;
-       b->buf = Newz('B',b->buf,b->bufsiz, STDCHAR);
+       b->buf = Newxz(b->buf,b->bufsiz, STDCHAR);
        if (!b->buf) {
            b->buf = (STDCHAR *) & b->oneword;
            b->bufsiz = sizeof(b->oneword);
@@ -4732,8 +4738,8 @@ PerlIO_getname(PerlIO *f, char *buf)
     }
     return name;
 #else
-    (void)f;
-    (void)buf;
+    PERL_UNUSED_ARG(f);
+    PERL_UNUSED_ARG(buf);
     Perl_croak(aTHX_ "Don't know how to get file name");
     return Nullch;
 #endif
@@ -4830,7 +4836,7 @@ PerlIO_vprintf(PerlIO *f, const char *fmt, va_list ap)
 {
     dTHX;
     SV *sv = newSVpvn("", 0);
-    char *s;
+    const char *s;
     STRLEN len;
     SSize_t wrote;
 #ifdef NEED_VA_COPY
@@ -4840,7 +4846,7 @@ PerlIO_vprintf(PerlIO *f, const char *fmt, va_list ap)
 #else
     sv_vcatpvf(sv, fmt, &ap);
 #endif
-    s = SvPV(sv, len);
+    s = SvPV_const(sv, len);
     wrote = PerlIO_write(f, s, len);
     SvREFCNT_dec(sv);
     return wrote;
@@ -4892,7 +4898,7 @@ PerlIO_tmpfile(void)
          f = PerlIO_fdopen(fd, "w+");
          if (f)
               PerlIOBase(f)->flags |= PERLIO_F_TEMP;
-         PerlLIO_unlink(SvPVX(sv));
+         PerlLIO_unlink(SvPVX_const(sv));
          SvREFCNT_dec(sv);
      }
 #    else      /* !HAS_MKSTEMP, fallback to stdio tmpfile(). */