From 318efbaec80a90f1d9ac76d0cd433f6ea3c103fa Mon Sep 17 00:00:00 2001
From: Panu Matilainen <pmatilai@redhat.com>
Date: Thu, 10 Feb 2022 10:07:06 +0200
Subject: [PATCH] Make rpmfiSetFX() return code meaningful

Up to now, rpmfiSetFX() has returned the previous file index on success,
and -1 on error. Which seems okay on the outset, but on a just
initialized iterator the file index is at -1 which means the returned
-1 sometimes indicates an error and sometimes success. This is so broken
that none of the callers even try to use it (grep for it). Which is
lucky in the sense that it means we can change it.

Simply return the newly set index on success and -1 on error, it may
not be the greatest return code on earth but at least it's
non-ambiguous.
---
 lib/rpmfi.c | 2 +-
 lib/rpmfi.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/rpmfi.c b/lib/rpmfi.c
index 30e073869..4965aeeeb 100644
--- a/lib/rpmfi.c
+++ b/lib/rpmfi.c
@@ -314,9 +314,9 @@ int rpmfiSetFX(rpmfi fi, int fx)
     int i = -1;
 
     if (fi != NULL && fx >= 0 && fx < rpmfilesFC(fi->files)) {
-	i = fi->i;
 	fi->i = fx;
 	fi->j = rpmfilesDI(fi->files, fi->i);
+	i = fi->i;
     }
     return i;
 }
diff --git a/lib/rpmfi.h b/lib/rpmfi.h
index 989582bc3..52310c6fe 100644
--- a/lib/rpmfi.h
+++ b/lib/rpmfi.h
@@ -39,7 +39,7 @@ int rpmfiFX(rpmfi fi);
  * Set current file index in file info set iterator.
  * @param fi		file info set iterator
  * @param fx		new file index
- * @return		current file index
+ * @return		new file index, -1 on error
  */
 int rpmfiSetFX(rpmfi fi, int fx);
 
-- 
2.27.0

