if (matches.recs[i].recOffset != otherOffset) {
if (!(flags & RPMINSTALL_UPGRADETOOLD))
if (rpmEnsureOlder(db, name, version, release,
- matches.recs[i].recOffset))
+ matches.recs[i].recOffset)) {
+ headerFree(h);
+ dbiFreeIndexRecord(matches);
return 2;
+ }
*intptr++ = matches.recs[i].recOffset;
}
}
}
}
+ dbiFreeIndexRecord(matches);
+
fileList = NULL;
if (headerGetEntry(h, RPMTAG_FILENAMES, &type, (void **) &fileList,
&fileCount)) {
headerFree(sech);
}
+
+ dbiFreeIndexRecord(matches);
}
return 0;
int rpmdbUpdateRecord(rpmdb db, int offset, Header newHeader) {
Header oldHeader;
+ int oldSize;
oldHeader = rpmdbGetRecord(db, offset);
if (!oldHeader) {
return 1;
}
- if (headerSizeof(oldHeader, HEADER_MAGIC_NO) !=
- headerSizeof(newHeader, HEADER_MAGIC_NO)) {
+ oldSize = headerSizeof(oldHeader, HEADER_MAGIC_NO);
+ headerFree(oldHeader);
+
+ if (oldSize != headerSizeof(newHeader, HEADER_MAGIC_NO)) {
rpmMessage(RPMMESS_DEBUG, "header changed size!");
if (rpmdbRemove(db, offset, 1))
return 1;