poldek: poldek/pm/rpm/rpmhdr.c - bugfix "Assertion 'n_array_size(langs) >= ...

megabajt megabajt at pld-linux.org
Tue Jul 29 23:05:32 CEST 2008


Author: megabajt                     Date: Tue Jul 29 21:05:32 2008 GMT
Module: poldek                        Tag: HEAD
---- Log message:
- bugfix "Assertion 'n_array_size(langs) >= ngroups' failed, pkgroup.c:468"

---- Files affected:
poldek/poldek/pm/rpm:
   rpmhdr.c (1.14 -> 1.15) 

---- Diffs:

================================================================
Index: poldek/poldek/pm/rpm/rpmhdr.c
diff -u poldek/poldek/pm/rpm/rpmhdr.c:1.14 poldek/poldek/pm/rpm/rpmhdr.c:1.15
--- poldek/poldek/pm/rpm/rpmhdr.c:1.14	Mon Jun  2 22:47:43 2008
+++ poldek/poldek/pm/rpm/rpmhdr.c	Tue Jul 29 23:05:27 2008
@@ -204,9 +204,14 @@
     return h;
 }
 
+/*
+ * pm_rpmhdr_langs:
+ *
+ * Returns NULL when no langs found.
+ */
 tn_array *pm_rpmhdr_langs(Header h)
 {
-    tn_array *alangs;
+    tn_array *alangs = NULL;
     char **langs;
     int t, n = 0, i;
 
@@ -222,9 +227,12 @@
     pm_rpmhdr_get_entry(h, RPMTAG_HEADERI18NTABLE, &langs, &t, &n);
 #endif
 
-    alangs = n_array_new(n, free, (tn_fn_cmp)strcmp);
-    for (i=0; i < n ; i++)
-        n_array_push(alangs, n_strdup(langs[i]));
+    /* do it when langs are available */
+    if (n > 0) {
+	alangs = n_array_new(n, free, (tn_fn_cmp)strcmp);
+	for (i=0; i < n ; i++)
+    	    n_array_push(alangs, n_strdup(langs[i]));
+    }
     
     free(langs);
     return alangs;
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/pm/rpm/rpmhdr.c?r1=1.14&r2=1.15&f=u



More information about the pld-cvs-commit mailing list