diff options
Diffstat (limited to 'src/perl/common/Rawlog.xs')
-rw-r--r-- | src/perl/common/Rawlog.xs | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/perl/common/Rawlog.xs b/src/perl/common/Rawlog.xs index c7422bac..c9a37d56 100644 --- a/src/perl/common/Rawlog.xs +++ b/src/perl/common/Rawlog.xs @@ -32,23 +32,24 @@ MODULE = Irssi PACKAGE = Irssi::Rawlog PREFIX = rawlog_ #******************************* void -values(rawlog) +init(rawlog) Irssi::Rawlog rawlog PREINIT: HV *hv; AV *av; GSList *tmp; -PPCODE: - hv = newHV(); - hv_store(hv, "logging", 7, newSViv(rawlog->logging), 0); - hv_store(hv, "nlines", 6, newSViv(rawlog->nlines), 0); - - av = newAV(); - for (tmp = rawlog->lines; tmp != NULL; tmp = tmp->next) { - av_push(av, new_pv(tmp->data)); +CODE: + hv = hvref(ST(0)); + if (hv != NULL) { + hv_store(hv, "logging", 7, newSViv(rawlog->logging), 0); + hv_store(hv, "nlines", 6, newSViv(rawlog->nlines), 0); + + av = newAV(); + for (tmp = rawlog->lines; tmp != NULL; tmp = tmp->next) { + av_push(av, new_pv(tmp->data)); + } + hv_store(hv, "lines", 5, newRV_noinc((SV*)av), 0); } - hv_store(hv, "lines", 5, newRV_noinc((SV*)av), 0); - XPUSHs(sv_2mortal(newRV_noinc((SV*)hv))); void rawlog_destroy(rawlog) |