RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Alexey Tourbin
Root: /v/rpm/cvs Email: at@rpm5.org
Module: rpm Date: 29-Aug-2008 10:14:56
Branch: HEAD Handle: 2008082908145600
Modified files:
rpm/rpmdb rpmdb.c
Log:
rpmdb.c (rpmdbNextIterator): replaced tail calls back with gotos
Summary:
Revision Changes Path
1.271 +4 -3 rpm/rpmdb/rpmdb.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmdb.c
============================================================================
$ cvs diff -u -r1.270 -r1.271 rpmdb.c
--- rpm/rpmdb/rpmdb.c 27 Aug 2008 12:58:24 -0000 1.270
+++ rpm/rpmdb/rpmdb.c 29 Aug 2008 08:14:56 -0000 1.271
@@ -2360,6 +2360,7 @@
if (mi->mi_dbc == NULL)
xx = dbiCopen(dbi, dbi->dbi_txnid, &mi->mi_dbc, mi->mi_cflags);
+next:
if (mi->mi_set) {
/* The set of header instances is known in advance. */
if (!(mi->mi_setx < mi->mi_set->count))
@@ -2449,7 +2450,7 @@
/* Skip damaged and inconsistent headers. */
if (rpmrc == RPMRC_FAIL)
- return rpmdbNextIterator(mi); /* tail call */
+ goto next;
}
}
@@ -2467,12 +2468,12 @@
rpmlog(RPMLOG_ERR,
_("rpmdb: damaged header #%u retrieved -- skipping.\n"),
mi->mi_offset);
- return rpmdbNextIterator(mi); /* tail call */
+ goto next;
}
/* Skip this header if iterator selector (if any) doesn't match. */
if (mireSkip(mi))
- return rpmdbNextIterator(mi); /* tail call */
+ goto next;
/* Mark header with its instance number. */
{ char origin[32];
@@ .
Received on Fri Aug 29 10:14:56 2008