mirror of https://github.com/fadden/nulib2.git
The "actualThreadEOF" value was getting set incorrectly on newly-added
message threads. This didn't cause any problems with the archive, but if you extracted the thread in question without reopening the archive you ended up getting the whole pre-sized buffer instead of just the part with data in it. Load the TOC if needed in Nu_ExtractThread. When thread extraction fails, don't send an update to the progress updater if there isn't a progress updater.
This commit is contained in:
parent
16460a8d2e
commit
38dafdc774
|
@ -347,7 +347,7 @@ Nu_CopyPresizedToArchive(NuArchive* pArchive, NuDataSource* pDataSource,
|
|||
pThread->thThreadCRC = 0; /* no CRC on pre-sized stuff */
|
||||
pThread->thThreadEOF = srcLen;
|
||||
pThread->thCompThreadEOF = bufferLen;
|
||||
pThread->actualThreadEOF = bufferLen;
|
||||
pThread->actualThreadEOF = srcLen;
|
||||
/* nuThreadIdx and fileOffset should already be set */
|
||||
|
||||
/*
|
||||
|
|
|
@ -744,7 +744,7 @@ retry_name:
|
|||
}
|
||||
|
||||
bail:
|
||||
if (err != kNuErrNone) {
|
||||
if (err != kNuErrNone && pProgressData != nil) {
|
||||
/* send a final progress message, indicating failure */
|
||||
if (err == kNuErrSkipped)
|
||||
pProgressData->state = kNuProgressSkipped;
|
||||
|
@ -825,6 +825,8 @@ Nu_ExtractThread(NuArchive* pArchive, NuThreadIdx threadIdx,
|
|||
return kNuErrUsage;
|
||||
if (threadIdx == 0 || pDataSink == nil)
|
||||
return kNuErrInvalidArg;
|
||||
err = Nu_GetTOCIfNeeded(pArchive);
|
||||
BailError(err);
|
||||
|
||||
/* find the correct record and thread by index */
|
||||
err = Nu_RecordSet_FindByThreadIdx(&pArchive->origRecordSet, threadIdx,
|
||||
|
|
Loading…
Reference in New Issue