From 3a39803f89d0a18e77dcfed2afd6df6289d2cdf7 Mon Sep 17 00:00:00 2001 From: Steffen Pankratz Date: Wed, 28 Jan 2026 14:57:31 +0100 Subject: [PATCH] Add 'UNSHIELD_ASSERT'. Signed-off-by: Steffen Pankratz --- lib/file.c | 15 +++++++-------- lib/libunshield.c | 3 +-- lib/libunshield.h | 9 +++++++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lib/file.c b/lib/file.c index a9c3715a..ac0d6b89 100644 --- a/lib/file.c +++ b/lib/file.c @@ -7,7 +7,6 @@ #endif #include "cabfile.h" #include "log.h" -#include #include #include @@ -58,7 +57,7 @@ static FileDescriptor* unshield_read_file_descriptor(Unshield* unshield, int ind fd->name_offset = READ_UINT32(p); p += 4; fd->directory_index = READ_UINT16(p); p += 2; - assert(fd->directory_index < unshield_directory_count(unshield)); + UNSHIELD_ASSERT(fd->directory_index < unshield_directory_count(unshield)); p += 2; fd->flags = READ_UINT16(p); p += 2; @@ -80,7 +79,7 @@ static FileDescriptor* unshield_read_file_descriptor(Unshield* unshield, int ind if (header->major_version == 5) { memcpy(fd->md5, p, 0x10); p += 0x10; - assert((p - saved_p) == 0x3a); + UNSHIELD_ASSERT((p - saved_p) == 0x3a); } break; @@ -111,9 +110,9 @@ static FileDescriptor* unshield_read_file_descriptor(Unshield* unshield, int ind p += 0x10; fd->name_offset = READ_UINT32(p); p += 4; fd->directory_index = READ_UINT16(p); p += 2; - assert(fd->directory_index < unshield_directory_count(unshield)); + UNSHIELD_ASSERT(fd->directory_index < unshield_directory_count(unshield)); - assert((p - saved_p) == 0x40); + UNSHIELD_ASSERT((p - saved_p) == 0x40); p += 0xc; fd->link_previous = READ_UINT32(p); p += 4; @@ -130,7 +129,7 @@ static FileDescriptor* unshield_read_file_descriptor(Unshield* unshield, int ind fd->volume = READ_UINT16(p); p += 2; - assert((p - saved_p) == 0x57); + UNSHIELD_ASSERT((p - saved_p) == 0x57); break; } @@ -938,7 +937,7 @@ int unshield_file_directory(Unshield* unshield, int index)/*{{{*/ FileDescriptor* fd = unshield_get_file_descriptor(unshield, index); if (fd) { - assert(fd->directory_index < unshield_directory_count(unshield)); + UNSHIELD_ASSERT(fd->directory_index < unshield_directory_count(unshield)); return fd->directory_index; } else @@ -1167,7 +1166,7 @@ bool unshield_file_save_old(Unshield* unshield, int index, const char* filename) #endif input_buffer = realloc(input_buffer, input_buffer_size); - assert(input_buffer); + UNSHIELD_ASSERT(input_buffer); } if (!unshield_reader_read(reader, input_buffer, input_size)) diff --git a/lib/libunshield.c b/lib/libunshield.c index 7b8edf2a..5970b22c 100644 --- a/lib/libunshield.c +++ b/lib/libunshield.c @@ -2,7 +2,6 @@ #define _DEFAULT_SOURCE 1 #include "internal.h" #include "log.h" -#include #include #include #include @@ -144,7 +143,7 @@ static bool unshield_get_cab_descriptor(Header* header) header->cab.file_count = READ_UINT32(p); p += 4; header->cab.file_table_offset2 = READ_UINT32(p); p += 4; - assert((p - (header->data + header->common.cab_descriptor_offset)) == 0x30); + UNSHIELD_ASSERT((p - (header->data + header->common.cab_descriptor_offset)) == 0x30); if (header->cab.file_table_size != header->cab.file_table_size2) unshield_warning("File table sizes do not match"); diff --git a/lib/libunshield.h b/lib/libunshield.h index f937f715..f5fa1c25 100644 --- a/lib/libunshield.h +++ b/lib/libunshield.h @@ -12,6 +12,15 @@ #define UNSHIELD_LOG_LEVEL_HIGHEST 4 +#ifdef NDEBUG +#undef NDEBUG +#include +#define UNSHIELD_ASSERT(x) assert(x) +#define NDEBUG +#else +#include +#define UNSHIELD_ASSERT(x) assert(x) +#endif #ifdef __cplusplus extern "C" {