summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorHugo van der Sanden <hv@crypt.org>2019-07-22 17:08:45 +0100
committerHugo van der Sanden <hv@crypt.org>2019-07-31 15:02:33 +0100
commit39b0ad1783fa21aad82d068e668313a54729d740 (patch)
tree1b25527a14fa86d5a8d4ae720eb6566dd09d5958 /sv.c
parenta06a4d45d476265b6d5143171126fe6f33ef2c44 (diff)
downloadperl-39b0ad1783fa21aad82d068e668313a54729d740.tar.gz
[perl #134172] Avoid multiple checks of IN_LC(LC_NUMERIC)
This adds new API macros STORE_LC_NUMERIC_SET_TO_NEEDED_IN and WITH_LC_NUMERIC_SET_TO_NEEDED_IN that accept a precalculated value for the hints checks of IN_LC(LC_NUMERIC).
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sv.c b/sv.c
index ef2c71126c..df0b601650 100644
--- a/sv.c
+++ b/sv.c
@@ -11784,7 +11784,7 @@ S_format_hexfp(pTHX_ char * const buf, const STRLEN bufsize, const char c,
#else
if (in_lc_numeric) {
STRLEN n;
- WITH_LC_NUMERIC_SET_TO_NEEDED({
+ WITH_LC_NUMERIC_SET_TO_NEEDED_IN(TRUE, {
const char* r = SvPV(PL_numeric_radix_sv, n);
Copy(r, p, n, char);
});
@@ -12978,7 +12978,7 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
}
if (in_lc_numeric) {
- WITH_LC_NUMERIC_SET_TO_NEEDED({
+ WITH_LC_NUMERIC_SET_TO_NEEDED_IN(TRUE, {
/* this can't wrap unless PL_numeric_radix_sv is a string
* consuming virtually all the 32-bit or 64-bit address
* space
@@ -13071,7 +13071,7 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
&& !fill
&& intsize != 'q'
) {
- WITH_LC_NUMERIC_SET_TO_NEEDED(
+ WITH_LC_NUMERIC_SET_TO_NEEDED_IN(in_lc_numeric,
SNPRINTF_G(fv, ebuf, sizeof(ebuf), precis)
);
elen = strlen(ebuf);
@@ -13174,7 +13174,7 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
const char* qfmt = quadmath_format_single(ptr);
if (!qfmt)
Perl_croak_nocontext("panic: quadmath invalid format \"%s\"", ptr);
- WITH_LC_NUMERIC_SET_TO_NEEDED(
+ WITH_LC_NUMERIC_SET_TO_NEEDED_IN(in_lc_numeric,
elen = quadmath_snprintf(PL_efloatbuf, PL_efloatsize,
qfmt, nv);
);
@@ -13187,13 +13187,13 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
Safefree(qfmt);
}
#elif defined(HAS_LONG_DOUBLE)
- WITH_LC_NUMERIC_SET_TO_NEEDED(
+ WITH_LC_NUMERIC_SET_TO_NEEDED_IN(in_lc_numeric,
elen = ((intsize == 'q')
? my_snprintf(PL_efloatbuf, PL_efloatsize, ptr, fv)
: my_snprintf(PL_efloatbuf, PL_efloatsize, ptr, (double)fv))
);
#else
- WITH_LC_NUMERIC_SET_TO_NEEDED(
+ WITH_LC_NUMERIC_SET_TO_NEEDED_IN(in_lc_numeric,
elen = my_snprintf(PL_efloatbuf, PL_efloatsize, ptr, fv)
);
#endif