Lua now uses only `realloc' for all its memory management
This commit is contained in:
15
lmem.c
15
lmem.c
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: lmem.c,v 1.54 2002/05/01 20:40:42 roberto Exp roberto $
|
||||
** $Id: lmem.c,v 1.55 2002/05/15 18:57:44 roberto Exp roberto $
|
||||
** Interface to Memory Manager
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@@ -17,9 +17,14 @@
|
||||
|
||||
|
||||
|
||||
/*
|
||||
** 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.)
|
||||
*/
|
||||
#ifndef l_realloc
|
||||
#define l_realloc(b,os,s) realloc(b,s)
|
||||
#define l_free(b,s) free(b)
|
||||
#endif
|
||||
|
||||
|
||||
@@ -50,8 +55,10 @@ 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) {
|
||||
l_free(block, oldsize); /* block may be NULL; that is OK for free */
|
||||
block = NULL;
|
||||
if (block != NULL) {
|
||||
l_realloc(block, oldsize, size);
|
||||
block = NULL;
|
||||
}
|
||||
}
|
||||
else if (size >= MAX_SIZET)
|
||||
luaG_runerror(L, "memory allocation error: block too big");
|
||||
|
||||
Reference in New Issue
Block a user