diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1994-11-16 15:39:16 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1994-11-16 15:39:16 -0200 |
| commit | 2b5bc5d1a81579a76c13e638de2592e2c39c73f0 (patch) | |
| tree | 8294278f9fbd2565d3a2cd11642fed41982824bd /table.c | |
| parent | 94686ce58554a80374eeff115ee5b87c184ed173 (diff) | |
| download | lua-2b5bc5d1a81579a76c13e638de2592e2c39c73f0.tar.gz lua-2b5bc5d1a81579a76c13e638de2592e2c39c73f0.tar.bz2 lua-2b5bc5d1a81579a76c13e638de2592e2c39c73f0.zip | |
new module for memory allocation
Diffstat (limited to 'table.c')
| -rw-r--r-- | table.c | 24 |
1 files changed, 7 insertions, 17 deletions
| @@ -3,11 +3,11 @@ | |||
| 3 | ** Module to control static tables | 3 | ** Module to control static tables |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_table="$Id: table.c,v 2.17 1994/11/14 21:40:14 roberto Exp $"; | 6 | char *rcs_table="$Id: table.c,v 2.18 1994/11/16 16:03:48 roberto Exp roberto $"; |
| 7 | 7 | ||
| 8 | #include <stdlib.h> | ||
| 9 | #include <string.h> | 8 | #include <string.h> |
| 10 | 9 | ||
| 10 | #include "mem.h" | ||
| 11 | #include "opcode.h" | 11 | #include "opcode.h" |
| 12 | #include "tree.h" | 12 | #include "tree.h" |
| 13 | #include "hash.h" | 13 | #include "hash.h" |
| @@ -16,7 +16,6 @@ char *rcs_table="$Id: table.c,v 2.17 1994/11/14 21:40:14 roberto Exp $"; | |||
| 16 | #include "lua.h" | 16 | #include "lua.h" |
| 17 | #include "fallback.h" | 17 | #include "fallback.h" |
| 18 | 18 | ||
| 19 | #define streq(s1,s2) (s1[0]==s2[0]&&strcmp(s1+1,s2+1)==0) | ||
| 20 | 19 | ||
| 21 | #define BUFFER_BLOCK 256 | 20 | #define BUFFER_BLOCK 256 |
| 22 | 21 | ||
| @@ -50,9 +49,7 @@ static void lua_initsymbol (void) | |||
| 50 | { | 49 | { |
| 51 | int n; | 50 | int n; |
| 52 | lua_maxsymbol = BUFFER_BLOCK; | 51 | lua_maxsymbol = BUFFER_BLOCK; |
| 53 | lua_table = (Symbol *) calloc(lua_maxsymbol, sizeof(Symbol)); | 52 | lua_table = newvector(lua_maxsymbol, Symbol); |
| 54 | if (lua_table == NULL) | ||
| 55 | lua_error ("symbol table: not enough memory"); | ||
| 56 | n = luaI_findsymbolbyname("next"); | 53 | n = luaI_findsymbolbyname("next"); |
| 57 | s_tag(n) = LUA_T_CFUNCTION; s_fvalue(n) = lua_next; | 54 | s_tag(n) = LUA_T_CFUNCTION; s_fvalue(n) = lua_next; |
| 58 | n = luaI_findsymbolbyname("nextvar"); | 55 | n = luaI_findsymbolbyname("nextvar"); |
| @@ -80,9 +77,7 @@ static void lua_initsymbol (void) | |||
| 80 | void lua_initconstant (void) | 77 | void lua_initconstant (void) |
| 81 | { | 78 | { |
| 82 | lua_maxconstant = BUFFER_BLOCK; | 79 | lua_maxconstant = BUFFER_BLOCK; |
| 83 | lua_constant = (char **) calloc(lua_maxconstant, sizeof(char *)); | 80 | lua_constant = newvector(lua_maxconstant, char *); |
| 84 | if (lua_constant == NULL) | ||
| 85 | lua_error ("constant table: not enough memory"); | ||
| 86 | } | 81 | } |
| 87 | 82 | ||
| 88 | 83 | ||
| @@ -102,9 +97,7 @@ int luaI_findsymbol (TreeNode *t) | |||
| 102 | lua_maxsymbol *= 2; | 97 | lua_maxsymbol *= 2; |
| 103 | if (lua_maxsymbol > MAX_WORD) | 98 | if (lua_maxsymbol > MAX_WORD) |
| 104 | lua_error("symbol table overflow"); | 99 | lua_error("symbol table overflow"); |
| 105 | lua_table = (Symbol *)realloc(lua_table, lua_maxsymbol*sizeof(Symbol)); | 100 | lua_table = growvector(lua_table, lua_maxsymbol, Symbol); |
| 106 | if (lua_table == NULL) | ||
| 107 | lua_error ("symbol table: not enough memory"); | ||
| 108 | } | 101 | } |
| 109 | t->varindex = lua_ntable; | 102 | t->varindex = lua_ntable; |
| 110 | s_tag(lua_ntable) = LUA_T_NIL; | 103 | s_tag(lua_ntable) = LUA_T_NIL; |
| @@ -136,9 +129,7 @@ int luaI_findconstant (TreeNode *t) | |||
| 136 | lua_maxconstant *= 2; | 129 | lua_maxconstant *= 2; |
| 137 | if (lua_maxconstant > MAX_WORD) | 130 | if (lua_maxconstant > MAX_WORD) |
| 138 | lua_error("constant table overflow"); | 131 | lua_error("constant table overflow"); |
| 139 | lua_constant = (char**)realloc(lua_constant,lua_maxconstant*sizeof(char*)); | 132 | lua_constant = growvector(lua_constant, lua_maxconstant, char*); |
| 140 | if (lua_constant == NULL) | ||
| 141 | lua_error ("constant table: not enough memory"); | ||
| 142 | } | 133 | } |
| 143 | t->constindex = lua_nconstant; | 134 | t->constindex = lua_nconstant; |
| 144 | lua_constant[lua_nconstant] = t->str; | 135 | lua_constant[lua_nconstant] = t->str; |
| @@ -202,7 +193,6 @@ void lua_pack (void) | |||
| 202 | char *lua_createstring (char *s) | 193 | char *lua_createstring (char *s) |
| 203 | { | 194 | { |
| 204 | if (s == NULL) return NULL; | 195 | if (s == NULL) return NULL; |
| 205 | |||
| 206 | return lua_strcreate(s); | 196 | return lua_strcreate(s); |
| 207 | } | 197 | } |
| 208 | 198 | ||
| @@ -226,7 +216,7 @@ char *lua_addfile (char *fn) | |||
| 226 | */ | 216 | */ |
| 227 | int lua_delfile (void) | 217 | int lua_delfile (void) |
| 228 | { | 218 | { |
| 229 | free(lua_file[--lua_nfile]); | 219 | luaI_free(lua_file[--lua_nfile]); |
| 230 | return 1; | 220 | return 1; |
| 231 | } | 221 | } |
| 232 | 222 | ||
