Skip to content

Commit

Permalink
plperl: windows: Use Perl_setlocale on 5.28+, fixing compile failure.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
anarazel committed Jan 31, 2022
1 parent 4ef38fb commit 2557a03
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions src/pl/plperl/plperl.c
Expand Up @@ -300,9 +300,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
Expand Down Expand Up @@ -4034,8 +4036,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)
{
Expand Down Expand Up @@ -4103,5 +4107,4 @@ setlocale_perl(int category, char *locale)

return RETVAL;
}

#endif /* WIN32 */
#endif /* defined(WIN32) && PERL_VERSION_LT(5, 28, 0) */

0 comments on commit 2557a03

Please sign in to comment.