summaryrefslogtreecommitdiff
path: root/Build/source/libs/lua53/lua53-src/src/lauxlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/lua53/lua53-src/src/lauxlib.c')
-rw-r--r--Build/source/libs/lua53/lua53-src/src/lauxlib.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/Build/source/libs/lua53/lua53-src/src/lauxlib.c b/Build/source/libs/lua53/lua53-src/src/lauxlib.c
index 8bdada50a7e..ac68bd32da9 100644
--- a/Build/source/libs/lua53/lua53-src/src/lauxlib.c
+++ b/Build/source/libs/lua53/lua53-src/src/lauxlib.c
@@ -1011,8 +1011,13 @@ static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) {
free(ptr);
return NULL;
}
- else
- return realloc(ptr, nsize);
+ else { /* cannot fail when shrinking a block */
+ void *newptr = realloc(ptr, nsize);
+ if (newptr == NULL && ptr != NULL && nsize <= osize)
+ return ptr; /* keep the original block */
+ else /* no fail or not shrinking */
+ return newptr; /* use the new block */
+ }
}