1
0
mirror of https://github.com/irssi/irssi.git synced 2025-01-03 14:56:47 -05:00

Merge pull request #1510 from ailin-nemui/perl-again

restore locale if perl breaks it
This commit is contained in:
ailin-nemui 2024-01-27 17:42:42 +00:00 committed by GitHub
commit 504fd7bc60
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 11 deletions

View File

@ -50,10 +50,3 @@ sub eval_file {
die "cap_sasl has been unloaded from Irssi ".Irssi::version()." because it conflicts with the built-in SASL support. See /help network for configuring SASL or read the ChangeLog for more information.";
}
}
if ( $] >= 5.037005 && $] <= 5.038000 ) {
# https://github.com/Perl/perl5/issues/21366
print STDERR "\e7 \e[A Irssi: applying locale workaround for Perl 5.38.0 \e8";
require POSIX;
POSIX::setlocale(&POSIX::LC_ALL, "");
}

View File

@ -90,24 +90,41 @@ static void xs_init(pTHX)
void perl_scripts_init(void)
{
char *code, *use_code;
int broken_perl;
perl_scripts = NULL;
perl_sources_start();
perl_signals_start();
my_perl = perl_alloc();
broken_perl = wcwidth(160);
perl_construct(my_perl);
broken_perl = broken_perl != wcwidth(160);
perl_parse(my_perl, xs_init, G_N_ELEMENTS(perl_args)-1, perl_args, NULL);
perl_parse(my_perl, xs_init, G_N_ELEMENTS(perl_args) - 1, perl_args, NULL);
perl_common_start();
perl_common_start();
use_code = perl_get_use_list();
code = g_strdup_printf(irssi_core_code, use_code);
perl_eval_pv(code, TRUE);
if (broken_perl) {
g_warning("applying locale workaround for Perl %d.%d, see "
"https://github.com/Perl/perl5/issues/21366",
PERL_REVISION, PERL_VERSION);
perl_eval_pv("package Irssi::Core;"
/* https://github.com/Perl/perl5/issues/21746 */
"if ( $] == $] )"
"{"
"require POSIX;"
"POSIX::setlocale(&POSIX::LC_ALL, \"\");"
"}"
"1;",
TRUE);
}
g_free(code);
g_free(use_code);
g_free(use_code);
}
/* Destroy all perl scripts and deinitialize perl interpreter */
@ -441,7 +458,7 @@ void perl_core_init(void)
char **argv = perl_args;
PERL_SYS_INIT3(&argc, &argv, &environ);
print_script_errors = 1;
print_script_errors = 1;
settings_add_str("perl", "perl_use_lib", PERL_USE_LIB);
/*PL_perl_destruct_level = 1; - this crashes with some people.. */