tmps = SvPV_const(sv, len);
if (PerlIO_isutf8(fp)) {
if (!SvUTF8(sv)) {
+ const STRLEN origlen = len;
/* We don't modify the original scalar. */
tmpbuf = bytes_to_utf8((const U8*) tmps, &len);
tmps = (char *) tmpbuf;
+ if (ckWARN(WARN_UTF8) && len != origlen) {
+ Perl_warner(aTHX_ packWARN(WARN_UTF8),
+ "Variable length character upgraded in print");
+ }
}
}
else if (DO_UTF8(sv)) {
return (PL_laststatval = PerlLIO_fstat(dirfd(IoDIRP(io)), &PL_statcache));
#else
Perl_die(aTHX_ PL_no_func, "dirfd");
- NORETURN_FUNCTION_END;
+ /* NOT REACHED */
+ return 0;
+ /* Can't use NORETURN_FUNCTION_END because Perl_die is not
+ * __attribute__noreturn__
+ * Can't use DIE because that does not return an integer
+ */
#endif
} else {
if (ckWARN2(WARN_UNOPENED,WARN_CLOSED))
dVAR;
register char **a;
register char *s;
+ char *buf;
char *cmd;
/* Make a copy so we can change it */
const Size_t cmdlen = strlen(incmd) + 1;
- Newx(cmd, cmdlen, char);
+ Newx(buf, cmdlen, char);
+ cmd = buf;
my_strlcpy(cmd, incmd, cmdlen);
while (*cmd && isSPACE(*cmd))
PERL_FPU_POST_EXEC
*s = '\'';
S_exec_failed(aTHX_ PL_cshname, fd, do_report);
- Safefree(cmd);
+ Safefree(buf);
return FALSE;
}
}
PerlProc_execl(PL_sh_path, "sh", "-c", cmd, (char *)NULL);
PERL_FPU_POST_EXEC
S_exec_failed(aTHX_ PL_sh_path, fd, do_report);
- Safefree(cmd);
+ Safefree(buf);
return FALSE;
}
}
S_exec_failed(aTHX_ PL_Argv[0], fd, do_report);
}
do_execfree();
- Safefree(cmd);
+ Safefree(buf);
return FALSE;
}