::unpack "if (fo)"; also "delete []" (SourceForge bug 3545609)

This commit is contained in:
John Reiser
2012-07-19 20:11:44 -07:00
parent 36b7c47247
commit 074671aa71
+4 -1
View File
@@ -1139,6 +1139,7 @@ void PackMachBase<T>::unpack(OutputFile *fo)
) { ) {
if (lc_seg==sc->cmd if (lc_seg==sc->cmd
&& 0!=sc->filesize ) { && 0!=sc->filesize ) {
if (fo)
fo->seek(sc->fileoff, SEEK_SET); fo->seek(sc->fileoff, SEEK_SET);
unsigned filesize = sc->filesize; unsigned filesize = sc->filesize;
unpackExtent(filesize, fo, total_in, total_out, unpackExtent(filesize, fo, total_in, total_out,
@@ -1161,10 +1162,12 @@ void PackMachBase<T>::unpack(OutputFile *fo)
if (lc_seg==rc->cmd if (lc_seg==rc->cmd
&& 0!=rc->filesize ) { && 0!=rc->filesize ) {
fi->seek(rc->fileoff, SEEK_SET); fi->seek(rc->fileoff, SEEK_SET);
if (fo)
fo->seek(sc->fileoff, SEEK_SET); fo->seek(sc->fileoff, SEEK_SET);
unsigned const len = rc->filesize; unsigned const len = rc->filesize;
MemBuffer data(len); MemBuffer data(len);
fi->readx(data, len); fi->readx(data, len);
if (fo)
fo->write(data, len); fo->write(data, len);
} }
} }
@@ -1180,7 +1183,7 @@ void PackMachBase<T>::unpack(OutputFile *fo)
c_adler, u_adler, false, sizeof(bhdr)); c_adler, u_adler, false, sizeof(bhdr));
} }
} }
delete mhdr; delete [] mhdr;
} }