aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--URPM.xs8
2 files changed, 8 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index a17f430..65b0641 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,5 @@
+- fix a segfault when callbacks don't get a header
+
Version 5.04 - 26 February 2015
- callbacks now get pkg name instead of just pkg id
diff --git a/URPM.xs b/URPM.xs
index f4ac459..40e3c46 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -1314,8 +1314,12 @@ static void *rpmRunTransactions_callback(const void *arg,
mPUSHs(newSViv(total));
}
// for erasures, the key provided by librpm is always 0, so let's add another parameter (fullname):
- char *s = headerGetAsString(h, RPMTAG_NVR);
- mPUSHs(newSVpv(s, 0));
+ if (h) {
+ char *s = headerGetAsString(h, RPMTAG_NVR);
+ mPUSHs(newSVpv(s, 0));
+ } else {
+ PUSHs(&PL_sv_undef);
+ }
PUTBACK;
i = call_sv(callback, callback == td->callback_open ? G_SCALAR : G_DISCARD);
SPAGAIN;