summaryrefslogtreecommitdiff
path: root/src/perl/perl-signals.c
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2001-03-07 12:09:38 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2001-03-07 12:09:38 +0000
commit21ce8803d6f124b9889e5d2aa9458f538f17eb7f (patch)
tree15ac50c0b2c87df6fef737b4528a5c657408967b /src/perl/perl-signals.c
parentd2e7e041ffd7acebee62e22afeb40af79c70c926 (diff)
downloadirssi-21ce8803d6f124b9889e5d2aa9458f538f17eb7f.zip
some perl fixes. NICK_REC is also now "iobject"..
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1358 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/perl/perl-signals.c')
-rw-r--r--src/perl/perl-signals.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/perl/perl-signals.c b/src/perl/perl-signals.c
index d4d3fa16..7f0db750 100644
--- a/src/perl/perl-signals.c
+++ b/src/perl/perl-signals.c
@@ -55,7 +55,6 @@ static void perl_call_signal(const char *func, int signal_id,
int retcount;
PERL_SIGNAL_ARGS_REC *rec;
- HV *stash;
SV *perlarg;
void *arg;
int n;
@@ -82,13 +81,19 @@ static void perl_call_signal(const char *func, int signal_id,
else if (strncmp(rec->args[n], "gslist_", 7) == 0) {
/* linked list - push as AV */
GSList *tmp;
+ SV *sv;
AV *av;
+ int iobject;
+ iobject = strcmp(rec->args[n]+7, "iobject") == 0;
av = newAV();
- stash = gv_stashpv(rec->args[n]+7, 0);
- for (tmp = arg; tmp != NULL; tmp = tmp->next)
- av_push(av, sv_2mortal(new_bless(tmp->data, stash)));
- perlarg = (SV*)av;
+ for (tmp = arg; tmp != NULL; tmp = tmp->next) {
+ sv = iobject ? irssi_bless((SERVER_REC *) tmp->data) :
+ irssi_bless_plain(rec->args[n]+7, tmp->data);
+ av_push(av, sv);
+ }
+
+ perlarg = newRV_noinc((SV *) av);
} else if (arg == NULL) {
/* don't bless NULL arguments */
perlarg = newSViv(0);
@@ -101,7 +106,7 @@ static void perl_call_signal(const char *func, int signal_id,
/* blessed object */
perlarg = irssi_bless_plain(rec->args[n], arg);
}
- XPUSHs(sv_2mortal(perlarg));
+ XPUSHs(sv_2mortal(perlarg));
}
PUTBACK;