fix finish_solvable do not rely on a "handle" argument, as the handle might have...
authorMichael Schroeder <mls@suse.de>
Mon, 8 Oct 2012 09:55:41 +0000 (11:55 +0200)
committerMichael Schroeder <mls@suse.de>
Mon, 8 Oct 2012 09:55:41 +0000 (11:55 +0200)
ext/repo_susetags.c

index 5ed8d9f..f6fd833 100644 (file)
@@ -401,9 +401,10 @@ tag_from_string(char *cs)
  */
 
 static void
-finish_solvable(struct parsedata *pd, Solvable *s, Id handle, Offset freshens)
+finish_solvable(struct parsedata *pd, Solvable *s, Offset freshens)
 {
   Pool *pool = pd->repo->pool;
+  Id handle = s - pool->solvables;
 
   if (pd->nfilelist)
     {
@@ -774,7 +775,7 @@ repo_add_susetags(Repo *repo, FILE *fp, Id defvendor, const char *language, int
       if (tag == CTAG('=', 'D', 'l', 't'))
        {
          if (s)
-           finish_solvable(&pd, s, handle, freshens);
+           finish_solvable(&pd, s, freshens);
          s = 0;
          pd.kind = 0;
           if (split(line + 5, sp, 5) != 4)
@@ -796,7 +797,7 @@ repo_add_susetags(Repo *repo, FILE *fp, Id defvendor, const char *language, int
          /* If we have an old solvable, complete it by filling in some
             default stuff.  */
          if (s)
-           finish_solvable(&pd, s, handle, freshens);
+           finish_solvable(&pd, s, freshens);
 
          /*
           * define kind
@@ -1150,7 +1151,7 @@ repo_add_susetags(Repo *repo, FILE *fp, Id defvendor, const char *language, int
     } /* for(;;) */
 
   if (s)
-    finish_solvable(&pd, s, handle, freshens);
+    finish_solvable(&pd, s, freshens);
   solv_free(pd.filelist);
 
   /* Shared attributes