mirror of
https://github.com/irssi/irssi.git
synced 2024-11-03 04:27:19 -05:00
Merge pull request #378 from ailin-nemui/staticperl
deinit perl on staticperl builds
This commit is contained in:
commit
4dd7f2b18f
@ -82,16 +82,18 @@ static void perl_script_destroy(PERL_SCRIPT_REC *script)
|
||||
extern void boot_DynaLoader(pTHX_ CV* cv);
|
||||
|
||||
#if PERL_STATIC_LIBS == 1
|
||||
extern void boot_Irssi(CV *cv);
|
||||
extern void boot_Irssi(pTHX_ CV *cv);
|
||||
|
||||
XS(boot_Irssi_Core)
|
||||
{
|
||||
dXSARGS;
|
||||
PERL_UNUSED_VAR(items);
|
||||
|
||||
irssi_callXS(boot_Irssi, cv, mark);
|
||||
irssi_boot(Irc);
|
||||
irssi_boot(UI);
|
||||
irssi_boot(TextUI);
|
||||
/* Make sure to keep this in line with perl_scripts_deinit below. */
|
||||
XSRETURN_YES;
|
||||
}
|
||||
#endif
|
||||
@ -155,6 +157,17 @@ void perl_scripts_deinit(void)
|
||||
/* Unload all perl libraries loaded with dynaloader */
|
||||
perl_eval_pv("foreach my $lib (@DynaLoader::dl_modules) { if ($lib =~ /^Irssi\\b/) { $lib .= '::deinit();'; eval $lib; } }", TRUE);
|
||||
|
||||
#if PERL_STATIC_LIBS == 1
|
||||
/* If perl is statically built we should manually deinit the modules
|
||||
which are booted in boot_Irssi_Core above */
|
||||
perl_eval_pv("foreach my $lib (qw("
|
||||
"Irssi" " "
|
||||
"Irssi::Irc" " "
|
||||
"Irssi::UI" " "
|
||||
"Irssi::TextUI"
|
||||
")) { eval $lib . '::deinit();'; }", TRUE);
|
||||
#endif
|
||||
|
||||
/* We could unload all libraries .. but this crashes with some
|
||||
libraries, probably because we don't call some deinit function..
|
||||
Anyway, this would free some memory with /SCRIPT RESET, but it
|
||||
|
Loading…
Reference in New Issue
Block a user