Lua 5.1.4: lmem.c
L0001
L0006
L0007
L0008 #include <stddef.h>
L0009
L0010 #define lmem_c
L0011 #define LUA_CORE
L0012
L0013 #include "lua.h"
L0014
L0015 #include "ldebug.h"
L0016 #include "ldo.h"
L0017 #include "lmem.h"
L0018 #include "lobject.h"
L0019 #include "lstate.h"
L0020
L0021
L0022
L0023
L0040
L0041
L0042
L0043 #define MINSIZEARRAY 4
L0044
L0045
L0046 void *luaM_growaux_ (lua_State *L, void *block, int *size, size_t size_elems,
L0047 int limit, const char *errormsg) {
L0048 void *newblock;
L0049 int newsize;
L0050 if (*size >= limit/2) {
L0051 if (*size >= limit)
L0052 luaG_runerror(L, errormsg);
L0053 newsize = limit;
L0054 }
L0055 else {
L0056 newsize = (*size)*2;
L0057 if (newsize < MINSIZEARRAY)
L0058 newsize = MINSIZEARRAY;
L0059 }
L0060 newblock = luaM_reallocv(L, block, *size, newsize, size_elems);
L0061 *size = newsize;
L0062 return newblock;
L0063 }
L0064
L0065
L0066 void *luaM_toobig (lua_State *L) {
L0067 luaG_runerror(L, "memory allocation error: block too big");
L0068 return NULL;
L0069 }
L0070
L0071
L0072
L0073
L0076 void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t nsize) {
L0077 global_State *g = G(L);
L0078 lua_assert((osize == 0) == (block == NULL));
L0079 block = (*g->frealloc)(g->ud, block, osize, nsize);
L0080 if (block == NULL && nsize > 0)
L0081 luaD_throw(L, LUA_ERRMEM);
L0082 lua_assert((nsize == 0) == (block == NULL));
L0083 g->totalbytes = (g->totalbytes - osize) + nsize;
L0084 return block;
L0085 }
L0086
Generated by pretty.lua