From 3d9487c1f6c1c9a27dfdcf647c4813ba29be2788 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Thu, 1 Nov 2012 14:50:04 +0000 Subject: (_run_cb_while_traversing) enable to pass additional flags (Db_traverse,Db_traverse_tag) discard callback results prior to introducing _run_cb_while_traversing() in commit r4947 on Jun 14 2012: "(_run_cb_while_traversing) introduce this helper" --- URPM.xs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/URPM.xs b/URPM.xs index d7dd26c..ce8c8c2 100644 --- a/URPM.xs +++ b/URPM.xs @@ -110,7 +110,7 @@ static int rpmError_callback() { return RPMLOG_DEFAULT; } -static inline int _run_cb_while_traversing(SV *callback, Header header) { +static inline int _run_cb_while_traversing(SV *callback, Header header, VOL I32 flags) { dSP; URPM__Package pkg = calloc(1, sizeof(struct s_Package)); @@ -121,7 +121,7 @@ static inline int _run_cb_while_traversing(SV *callback, Header header) { mXPUSHs(sv_setref_pv(newSVpvs(""), "URPM::Package", pkg)); PUTBACK; - int count = call_sv(callback, G_SCALAR); + int count = call_sv(callback, G_SCALAR | flags); SPAGAIN; pkg->h = NULL; /* avoid using it anymore, in case it has been copied inside callback */ @@ -2416,7 +2416,7 @@ Db_traverse(db,callback) mi = rpmtsInitIterator(db->ts, RPMDBI_PACKAGES, NULL, 0); while ((header = rpmdbNextIterator(mi))) { if (SvROK(callback)) { - _run_cb_while_traversing(callback, header); + _run_cb_while_traversing(callback, header, G_DISCARD); } ++count; } @@ -2454,7 +2454,7 @@ Db_traverse_tag(db,tag,names,callback) mi = rpmtsInitIterator(db->ts, rpmtag, name, str_len); while ((header = rpmdbNextIterator(mi))) { if (SvROK(callback)) { - _run_cb_while_traversing(callback, header); + _run_cb_while_traversing(callback, header, G_DISCARD); } ++count; } @@ -2484,7 +2484,7 @@ Db_traverse_tag_find(db,tag,name,callback) ovsflags = ts_nosignature(db->ts); mi = rpmtsInitIterator(db->ts, rpmtag, name, 0); while ((header = rpmdbNextIterator(mi))) { - int count = _run_cb_while_traversing(callback, header); + int count = _run_cb_while_traversing(callback, header, 0); if (count == 1 && POPi) { found = 1; -- cgit v1.2.1