mirror of
https://github.com/lua/lua
synced 2025-01-11 11:59:18 +03:00
new ANSI C does not assure that realloc(p,0) == free(p)
This commit is contained in:
parent
fa2f1ec7ba
commit
02afc892d5
19
lmem.c
19
lmem.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: lmem.c,v 1.56 2002/06/11 16:23:47 roberto Exp roberto $
|
||||
** $Id: lmem.c,v 1.57 2002/06/18 15:19:27 roberto Exp roberto $
|
||||
** Interface to Memory Manager
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -18,15 +18,22 @@
|
||||
|
||||
|
||||
/*
|
||||
** definition for realloc function. It must assure that
|
||||
** l_realloc(block, x, 0) frees the block, and l_realloc(NULL, 0, x)
|
||||
** allocates a new block (ANSI C assures that).
|
||||
** (`os' is the old block size; some allocators may use that.)
|
||||
** definition for realloc function. It must assure that l_realloc(NULL,
|
||||
** 0, x) allocates a new block (ANSI C assures that). (`os' is the old
|
||||
** block size; some allocators may use that.)
|
||||
*/
|
||||
#ifndef l_realloc
|
||||
#define l_realloc(b,os,s) realloc(b,s)
|
||||
#endif
|
||||
|
||||
/*
|
||||
** definition for free function. (`os' is the old block size; some
|
||||
** allocators may use that.)
|
||||
*/
|
||||
#ifndef l_free
|
||||
#define l_free(b,os) free(b)
|
||||
#endif
|
||||
|
||||
|
||||
#define MINSIZEARRAY 4
|
||||
|
||||
@ -56,7 +63,7 @@ void *luaM_growaux (lua_State *L, void *block, int *size, int size_elems,
|
||||
void *luaM_realloc (lua_State *L, void *block, lu_mem oldsize, lu_mem size) {
|
||||
if (size == 0) {
|
||||
if (block != NULL) {
|
||||
l_realloc(block, oldsize, size);
|
||||
l_free(block, oldsize);
|
||||
block = NULL;
|
||||
}
|
||||
}
|
||||
|
3
ltests.h
3
ltests.h
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: ltests.h,v 1.14 2002/06/13 13:45:31 roberto Exp roberto $
|
||||
** $Id: ltests.h,v 1.15 2002/07/17 16:25:13 roberto Exp roberto $
|
||||
** Internal Header for Debugging of the Lua Implementation
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -34,6 +34,7 @@ extern unsigned long memdebug_memlimit;
|
||||
|
||||
|
||||
#define l_realloc(b, os, s) debug_realloc(b, os, s)
|
||||
#define l_free(b, os) debug_realloc(b, os, 0)
|
||||
|
||||
void *debug_realloc (void *block, size_t oldsize, size_t size);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user