Blob Blame History Raw
commit 2f20f6e6b2cc6f26794678d1db16659c484a001c
Author: Panu Matilainen <pmatilai@redhat.com>
Date:   Wed Mar 21 09:07:21 2012 +0200

    Transaction element file info can be legally NULL in some cases
    
    - rpmteClose() will wipe out the file info to free memory, we only
      should care whether we failed to (re)load the file info. This
      thinko in commit 06a2f1269b035a3a76464149834f2a5a8c4e89f2
      broke %posttrans scriptlets (and without commit
      274dbf557d1cac90f7c278f9b6d6af05997d92df, %pretrans in other
      circumstances), whoopsie *blush*. Now, off to write a test-case
      for our scriptlet behavior...

diff --git a/lib/rpmte.c b/lib/rpmte.c
index 65e1e76..65d65af 100644
--- a/lib/rpmte.c
+++ b/lib/rpmte.c
@@ -693,11 +693,12 @@ static int rpmteOpen(rpmte te, int reload_fi)
     }
     if (h != NULL) {
 	if (reload_fi) {
+	    /* This can fail if we get a different, bad header from callback */
 	    te->fi = getFI(te, h);
+	    rc = (te->fi != NULL);
+	} else {
+	    rc = 1;
 	}
-
-	/* This can fail if we get a different, bad header from callback */
-	rc = (te->fi != NULL);
 	
 	rpmteSetHeader(te, h);
 	headerFree(h);