diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1996-03-21 15:55:02 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1996-03-21 15:55:02 -0300 |
| commit | 7a35f23c1688e3e24781c780e121bbdc0e4b53e1 (patch) | |
| tree | b3de8cfb741848e579385f4751f95fdc37d3a5d3 /luamem.c | |
| parent | 9284742a11b92dfe4ef011b963240cfa588515cd (diff) | |
| download | lua-7a35f23c1688e3e24781c780e121bbdc0e4b53e1.tar.gz lua-7a35f23c1688e3e24781c780e121bbdc0e4b53e1.tar.bz2 lua-7a35f23c1688e3e24781c780e121bbdc0e4b53e1.zip | |
a simplification about memory error messages.
Diffstat (limited to 'luamem.c')
| -rw-r--r-- | luamem.c | 29 |
1 files changed, 5 insertions, 24 deletions
| @@ -3,7 +3,7 @@ | |||
| 3 | ** TecCGraf - PUC-Rio | 3 | ** TecCGraf - PUC-Rio |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_mem = "$Id: mem.c,v 1.9 1996/03/14 15:55:49 roberto Exp roberto $"; | 6 | char *rcs_mem = "$Id: mem.c,v 1.10 1996/03/21 16:31:32 roberto Exp roberto $"; |
| 7 | 7 | ||
| 8 | #include <stdlib.h> | 8 | #include <stdlib.h> |
| 9 | #include <string.h> | 9 | #include <string.h> |
| @@ -14,27 +14,8 @@ char *rcs_mem = "$Id: mem.c,v 1.9 1996/03/14 15:55:49 roberto Exp roberto $"; | |||
| 14 | #include "table.h" | 14 | #include "table.h" |
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | char *luaI_memerrormsg[NUMERRMSG] = { | 17 | #define mem_error() lua_error(memEM) |
| 18 | "code size overflow", | 18 | |
| 19 | "symbol table overflow", | ||
| 20 | "constant table overflow", | ||
| 21 | "stack size overflow", | ||
| 22 | "lex buffer overflow", | ||
| 23 | "lock table overflow" | ||
| 24 | }; | ||
| 25 | |||
| 26 | |||
| 27 | static void mem_error (void) | ||
| 28 | { | ||
| 29 | Long recovered = luaI_collectgarbage(); /* try to collect garbage */ | ||
| 30 | if (recovered) | ||
| 31 | lua_error("not enough memory"); | ||
| 32 | else | ||
| 33 | { /* if there is no garbage then must exit */ | ||
| 34 | fprintf(stderr, "lua error: memory overflow - unable to recover\n"); | ||
| 35 | exit(1); | ||
| 36 | } | ||
| 37 | } | ||
| 38 | 19 | ||
| 39 | void luaI_free (void *block) | 20 | void luaI_free (void *block) |
| 40 | { | 21 | { |
| @@ -66,10 +47,10 @@ void *luaI_realloc (void *oldblock, unsigned long size) | |||
| 66 | 47 | ||
| 67 | 48 | ||
| 68 | int luaI_growvector (void **block, unsigned long nelems, int size, | 49 | int luaI_growvector (void **block, unsigned long nelems, int size, |
| 69 | enum memerrormsg errormsg, unsigned long limit) | 50 | char *errormsg, unsigned long limit) |
| 70 | { | 51 | { |
| 71 | if (nelems >= limit) | 52 | if (nelems >= limit) |
| 72 | lua_error(luaI_memerrormsg[errormsg]); | 53 | lua_error(errormsg); |
| 73 | nelems = (nelems == 0) ? 20 : nelems*2; | 54 | nelems = (nelems == 0) ? 20 : nelems*2; |
| 74 | if (nelems > limit) | 55 | if (nelems > limit) |
| 75 | nelems = limit; | 56 | nelems = limit; |
