summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorMathieu Malaterre <mathieu.malaterre@gmail.com>2014-03-03 11:48:27 +0000
committerMathieu Malaterre <mathieu.malaterre@gmail.com>2014-03-03 11:48:27 +0000
commit18049fe3e0dadd6765f030e71d647d6865e8625d (patch)
tree7420122167f8959035c792a62777d81a13c6f519 /src/lib
parentb330c104924b377f60846cdcc87659607d3a848c (diff)
[trunk] Import left over from patch submitted as issue 225 (comment #14)
Update issue 225
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/openjp2/opj_malloc.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/lib/openjp2/opj_malloc.h b/src/lib/openjp2/opj_malloc.h
index aef2ee3b..95ad1472 100644
--- a/src/lib/openjp2/opj_malloc.h
+++ b/src/lib/openjp2/opj_malloc.h
@@ -48,8 +48,13 @@ Allocate an uninitialized memory block
#ifdef ALLOC_PERF_OPT
void * OPJ_CALLCONV opj_malloc(size_t size);
#else
+/* prevent assertion on overflow for MSVC */
+#ifdef _MSC_VER
+#define opj_malloc(size) ((size_t)(size) >= (size_t)-0x100 ? NULL : malloc(size))
+#else
#define opj_malloc(size) malloc(size)
#endif
+#endif
/**
Allocate a memory block with elements initialized to 0
@@ -60,8 +65,13 @@ Allocate a memory block with elements initialized to 0
#ifdef ALLOC_PERF_OPT
void * OPJ_CALLCONV opj_calloc(size_t _NumOfElements, size_t _SizeOfElements);
#else
+/* prevent assertion on overflow for MSVC */
+#ifdef _MSC_VER
+#define opj_calloc(num, size) ((size_t)(num) != 0 && (size_t)(num) >= (size_t)-0x100 / (size_t)(size) ? NULL : calloc(num, size))
+#else
#define opj_calloc(num, size) calloc(num, size)
#endif
+#endif
/**
Allocate memory aligned to a 16 byte boundry
@@ -139,8 +149,13 @@ Reallocate memory blocks.
#ifdef ALLOC_PERF_OPT
void * OPJ_CALLCONV opj_realloc(void * m, size_t s);
#else
+/* prevent assertion on overflow for MSVC */
+#ifdef _MSC_VER
+#define opj_realloc(m, s) ((size_t)(s) >= (size_t)-0x100 ? NULL : realloc(m, s))
+#else
#define opj_realloc(m, s) realloc(m, s)
#endif
+#endif
/**
Deallocates or frees a memory block.