(void)rsignal(sig, PL_csighandlerp);
#endif
#endif /* !PERL_MICRO */
- Perl_die(aTHX_ Nullformat);
+ DieNull;
}
cleanup:
if (flags & 1)
#ifndef SVf
# ifdef CHECK_FORMAT
-# define SVf "p"
+# define SVf "-p"
# ifndef SVf256
-# define SVf256 SVf
+# define SVf256 "-256p"
# endif
# else
# define SVf "_"
#ifndef VDf
# ifdef CHECK_FORMAT
-# define VDf "p"
+# define VDf "-1p"
# else
# define VDf "vd"
# endif
#endif
-#ifndef Nullformat
+#ifndef DieNull
# ifdef CHECK_FORMAT
-# define Nullformat "%s",""
+# define DieNull vdie(aTHX_ Nullch, Null(va_list *))
# else
-# define Nullformat Nullch
+# define DieNull Perl_die(aTHX_ Nullch)
# endif
#endif
#define NORMAL PL_op->op_next
#define DIE return Perl_die
+#define DIE_NULL return DieNull
/*
=for apidoc Ams||PUTBACK
sv_setsv(error,*PL_stack_sp--);
}
}
- DIE(aTHX_ Nullformat);
+ DIE_NULL;
}
else {
if (SvPOK(error) && SvCUR(error))
fill = *q++;
EXPECT_NUMBER(q, width);
+#ifdef CHECK_FORMAT
+ if ((*q == 'p') && left) {
+ vectorize = (width == 1);
+ }
+#endif
if (vectorize) {
if (vectorarg) {
if (args)
goto string;
case '_':
+#ifdef CHECK_FORMAT
+ format_sv:
+#endif
/*
* The "%_" hack might have to be changed someday,
* if ISO or ANSI decide to use '_' for something.
/* INTEGERS */
case 'p':
+#ifdef CHECK_FORMAT
+ if (left) {
+ left = FALSE;
+ if (width > 0) {
+ width = 0;
+ if (vectorize)
+ goto format_d;
+ precis = width;
+ has_precis = TRUE;
+ }
+ goto format_sv;
+ }
+#endif
if (alt || vectorize)
goto unknown;
uv = PTR2UV(args ? va_arg(*args, void*) : argsv);
#else
intsize = 'l';
#endif
+#ifdef CHECK_FORMAT
+ format_d:
+#endif
/* FALL THROUGH */
case 'd':
case 'i':