From f173738d56564689569d697f80b3f7ca3f5b236c Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Sun, 30 Jan 2022 14:29:04 -0800 Subject: [PATCH] plperl: windows: Use Perl_setlocale on 5.28+, fixing compile failure. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For older versions we need our own copy of perl's setlocale(), because it was not exposed (why we need the setlocale in the first place is explained in plperl_init_interp) . The copy stopped working in 5.28, as some of the used macros are not public anymore. But Perl_setlocale is available in 5.28, so use that. Author: Victor Wagner Reviewed-By: Dagfinn Ilmari Mannsåker Discussion: https://postgr.es/m/20200501134711.08750c5f@antares.wagner.home Backpatch: all versions --- src/pl/plperl/plperl.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index 2db13d3030..dfbc798383 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -299,9 +299,11 @@ static char *strip_trailing_ws(const char *msg); static OP *pp_require_safe(pTHX); static void activate_interpreter(plperl_interp_desc *interp_desc); -#ifdef WIN32 +#if defined(WIN32) && PERL_VERSION_LT(5, 28, 0) static char *setlocale_perl(int category, char *locale); -#endif +#else +#define setlocale_perl(a,b) Perl_setlocale(a,b) +#endif /* defined(WIN32) && PERL_VERSION_LT(5, 28, 0) */ /* * Decrement the refcount of the given SV within the active Perl interpreter @@ -4157,8 +4159,10 @@ plperl_inline_callback(void *arg) /* * Perl's own setlocale(), copied from POSIX.xs * (needed because of the calls to new_*()) + * + * Starting in 5.28, perl exposes Perl_setlocale to do so. */ -#ifdef WIN32 +#if defined(WIN32) && PERL_VERSION_LT(5, 28, 0) static char * setlocale_perl(int category, char *locale) { @@ -4226,5 +4230,4 @@ setlocale_perl(int category, char *locale) return RETVAL; } - -#endif /* WIN32 */ +#endif /* defined(WIN32) && PERL_VERSION_LT(5, 28, 0) */