Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/rarfilesource.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'RAR.cpp')
-rw-r--r--RAR.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/RAR.cpp b/RAR.cpp
index 61dcd7b..1c7d1bb 100644
--- a/RAR.cpp
+++ b/RAR.cpp
@@ -45,17 +45,6 @@ DWORD ReadHeader (HANDLE file, rar_header_t *dest)
dest->ch.flags = fh.flags;
dest->ch.type = fh.type;
- if (fh.flags & LONG_BLOCK)
- {
- READ_ITEM (dword);
- dest->ch.size.QuadPart = (LONGLONG) dword + fh.size;
- }
- else
- {
- dest->ch.size.HighPart = 0;
- dest->ch.size.LowPart = fh.size;
- }
-
switch (fh.type)
{
case HEADER_TYPE_ARCHIVE:
@@ -65,6 +54,7 @@ DWORD ReadHeader (HANDLE file, rar_header_t *dest)
case HEADER_TYPE_FILE:
READ_ITEM (ffh);
+ dest->ch.size.QuadPart = (LONGLONG) ffh.packedSize + fh.size;
dest->fh.size.LowPart = ffh.size;
dest->fh.os = ffh.os;
dest->fh.crc = ffh.crc;
@@ -120,6 +110,19 @@ DWORD ReadHeader (HANDLE file, rar_header_t *dest)
}
}
}
+ break;
+
+ default:
+ if (fh.flags & LONG_BLOCK)
+ {
+ READ_ITEM (dword);
+ dest->ch.size.QuadPart = (LONGLONG) dword + fh.size;
+ }
+ else
+ {
+ dest->ch.size.HighPart = 0;
+ dest->ch.size.LowPart = fh.size;
+ }
}
if (acc > dest->ch.size.QuadPart)