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:
authorOctaneSnail <os@v12pwr.com>2010-06-25 23:47:53 +0400
committerOctaneSnail <os@v12pwr.com>2010-06-25 23:47:53 +0400
commit0f64bff8ffd3edcd62d7c71c48cd0a91af143e1d (patch)
tree0b0f3ec29f8c411dabe7b60f49e2c07bb68a454d
parentec6e3c3c78c3ea32600dcde4a3ce48d1291315e5 (diff)
Fix end of file detection when reading headers.
-rw-r--r--RAR.cpp17
1 files changed, 4 insertions, 13 deletions
diff --git a/RAR.cpp b/RAR.cpp
index 310c2e3..61dcd7b 100644
--- a/RAR.cpp
+++ b/RAR.cpp
@@ -20,24 +20,15 @@
#include "rar.h"
#include "utils.h"
-#define READ_ITEM(item) { \
- if (!ReadFile (file, &item, sizeof (item), &read, NULL) || read != sizeof (item)) \
- { \
- DWORD err = GetLastError (); \
- if (!read && !err) return ERROR_HANDLE_EOF; \
- ErrorMsg (err, L"Could not read RAR header"); \
- return S_FALSE; \
- } \
- acc += read; }
+#define READ_ITEM(item) READ_ITEM2(&item, sizeof(item))
#define READ_ITEM2(item, size) { \
- if (!ReadFile (file, item, size, &read, NULL) || read != size) \
+ if (!ReadFile (file, item, size, &read, NULL)) \
{ \
- DWORD err = GetLastError (); \
- if (!read && !err) return ERROR_HANDLE_EOF; \
- ErrorMsg (err, L"Could not read RAR header"); \
+ ErrorMsg (GetLastError (), L"Could not read RAR header"); \
return S_FALSE; \
} \
+ if (read < size) return ERROR_HANDLE_EOF; \
acc += read; }
DWORD ReadHeader (HANDLE file, rar_header_t *dest)