Use typed instead of void pointer for fsm map iterator
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 21 Sep 2010 11:12:55 +0000 (14:12 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 21 Sep 2010 11:12:55 +0000 (14:12 +0300)
- Passing a void pointer for an internal helper function which
  casts to the destination is just ... pfff.

lib/fsm.c

index 061e97b..2fca8ae 100644 (file)
--- a/lib/fsm.c
+++ b/lib/fsm.c
@@ -135,16 +135,15 @@ static char * fsmFsPath(const FSM_t fsm,
  * @param p            file info iterator
  * @retval             NULL always
  */
-static void * mapFreeIterator(void * p)
+static FSMI_t mapFreeIterator(FSMI_t iter)
 {
-    FSMI_t iter = p;
     if (iter) {
-/* XXX rpmswExit() */
        iter->ts = rpmtsFree(iter->ts);
        iter->te = NULL; /* XXX rpmte is not refcounted yet */
        iter->fi = rpmfiFree(iter->fi);
+       free(iter);
     }
-    return _free(p);
+    return NULL;
 }
 
 /** \ingroup payload
@@ -153,7 +152,7 @@ static void * mapFreeIterator(void * p)
  * @param fi           transaction element file info
  * @return             file info iterator
  */
-static void *
+static FSMI_t 
 mapInitIterator(rpmts ts, rpmte te, rpmfi fi)
 {
     FSMI_t iter = NULL;
@@ -173,9 +172,8 @@ mapInitIterator(rpmts ts, rpmte te, rpmfi fi)
  * @param a            file info iterator
  * @return             next index, -1 on termination
  */
-static int mapNextIterator(void * a)
+static int mapNextIterator(FSMI_t iter)
 {
-    FSMI_t iter = a;
     int i = -1;
 
     if (iter) {