summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Feist <shabble@metavore.org>2016-07-12 12:42:15 +0200
committerLemonBoy <thatlemon@gmail.com>2016-07-12 12:42:15 +0200
commit9559a8ead9048433783a453ca47c63514a39b205 (patch)
tree8b71574b09dc2c34d70b9bf0f7e941d2a421d10b
parentb8f7eaad40d66b653fa1ff2ed366954e6e8d9732 (diff)
downloadirssi-9559a8ead9048433783a453ca47c63514a39b205.zip
Allow Irssi::signal_remove to work properly with coderefs
-rw-r--r--src/perl/perl-signals.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/perl/perl-signals.c b/src/perl/perl-signals.c
index 007f7ad5..8f993660 100644
--- a/src/perl/perl-signals.c
+++ b/src/perl/perl-signals.c
@@ -433,8 +433,9 @@ static void perl_signal_remove_list_one(GSList **siglist, PERL_SIGNAL_REC *rec)
}
#define sv_func_cmp(f1, f2) \
- (f1 == f2 || (SvPOK(f1) && SvPOK(f2) && \
- g_strcmp0(SvPV_nolen(f1), SvPV_nolen(f2)) == 0))
+ ((SvROK(f1) && SvROK(f2) && SvRV(f1) == SvRV(f2)) || \
+ (SvPOK(f1) && SvPOK(f2) && \
+ g_strcmp0(SvPV_nolen(f1), SvPV_nolen(f2)) == 0))
static void perl_signal_remove_list(GSList **list, SV *func)
{