From a056e218cd7d87e10e8f546fe20d02e992160011 Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Tue, 9 Dec 2008 15:55:29 +0000 Subject: free the iterator *after* use (otherwise it segfaults with 4.6.0-rc1, and i wonder how it worked before...) --- URPM.xs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/URPM.xs b/URPM.xs index 2fb9181..f36ddd1 100644 --- a/URPM.xs +++ b/URPM.xs @@ -731,8 +731,7 @@ return_problems(rpmps ps, int translate_message, int raw_message) { if (ps && rpmpsNumProblems(ps) > 0) { #ifdef RPM_ORG rpmpsi iterator = rpmpsInitIterator(ps); - rpmpsFreeIterator(iterator); - while (rpmpsNextIterator(iterator)) { + while (rpmpsNextIterator(iterator) >= 0) { rpmProblem p = rpmpsGetProblem(iterator); #else int i; @@ -791,6 +790,9 @@ return_problems(rpmps ps, int translate_message, int raw_message) { XPUSHs(sv_2mortal(sv)); } } +#ifdef RPM_ORG + rpmpsFreeIterator(iterator); +#endif } PUTBACK; } -- cgit v1.2.1