aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--URPM.xs8
2 files changed, 6 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 373e2ee..c20c842 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,5 @@
+- fix bad free() (thanks to glibc for detecting it)
+
Version 3.22 - 12 December 2008, by Pascal "Pixel" Rigaux
- fix scriptlet failing:
diff --git a/URPM.xs b/URPM.xs
index 13fa296..cfbfad1 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -468,14 +468,14 @@ return_list_str(char *s, Header header, int32_t tag_name, int32_t tag_flags, int
if (f(NULL, 0, rpmtdGetString(&list), flag ? *flag : 0,
rpmtdNextString(&list_evr), param)) {
rpmtdFreeData(&list);
- rpmtdFreeData(&flags);
- rpmtdFreeData(&list_evr);
+ if (tag_flags) rpmtdFreeData(&flags);
+ if (tag_version) rpmtdFreeData(&list_evr);
return -count;
}
}
rpmtdFreeData(&list);
- rpmtdFreeData(&flags);
- rpmtdFreeData(&list_evr);
+ if (tag_flags) rpmtdFreeData(&flags);
+ if (tag_version) rpmtdFreeData(&list_evr);
}
}
return count;