aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2022-01-30 14:29:04 -0800
committerAndres Freund <andres@anarazel.de>2022-01-30 16:42:42 -0800
commit8484e38126d7522069e44b81cd41ef53f700b2e1 (patch)
treea4d699c9f8d768757bc0bbc5594bda895e9e5626
parentc025067f6d3fbffd1acc8c70ec9d2ecc5be8c90b (diff)
downloadpostgresql-8484e38126d7522069e44b81cd41ef53f700b2e1.tar.gz
postgresql-8484e38126d7522069e44b81cd41ef53f700b2e1.zip
plperl: windows: Use Perl_setlocale on 5.28+, fixing compile failure.
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 <vitus@wagner.pp.ru> Reviewed-By: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> Discussion: https://postgr.es/m/20200501134711.08750c5f@antares.wagner.home Backpatch: all versions
-rw-r--r--src/pl/plperl/plperl.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 6299adf71ad..8824beb08ed 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -298,9 +298,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
@@ -4130,8 +4132,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)
{
@@ -4199,5 +4203,4 @@ setlocale_perl(int category, char *locale)
return RETVAL;
}
-
-#endif /* WIN32 */
+#endif /* defined(WIN32) && PERL_VERSION_LT(5, 28, 0) */