aboutsummaryrefslogtreecommitdiff
path: root/luamem.c
diff options
context:
space:
mode:
Diffstat (limited to 'luamem.c')
-rw-r--r--luamem.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/luamem.c b/luamem.c
index d040f31d..ef4eae29 100644
--- a/luamem.c
+++ b/luamem.c
@@ -3,7 +3,7 @@
3** TecCGraf - PUC-Rio 3** TecCGraf - PUC-Rio
4*/ 4*/
5 5
6char *rcs_mem = "$Id: mem.c,v 1.6 1996/01/22 14:15:13 roberto Exp roberto $"; 6char *rcs_mem = "$Id: mem.c,v 1.7 1996/02/04 16:59:12 roberto Exp roberto $";
7 7
8#include <stdlib.h> 8#include <stdlib.h>
9#include <string.h> 9#include <string.h>
@@ -27,8 +27,11 @@ static void mem_error (void)
27 27
28void luaI_free (void *block) 28void luaI_free (void *block)
29{ 29{
30 *((int *)block) = -1; /* to catch errors */ 30 if (block)
31 free(block); 31 {
32 *((int *)block) = -1; /* to catch errors */
33 free(block);
34 }
32} 35}
33 36
34 37
@@ -43,16 +46,10 @@ void *luaI_malloc (unsigned long size)
43 46
44void *luaI_realloc (void *oldblock, unsigned long size) 47void *luaI_realloc (void *oldblock, unsigned long size)
45{ 48{
46 void *block = realloc(oldblock, (size_t)size); 49 void *block = oldblock ? realloc(oldblock, (size_t)size) :
50 malloc((size_t)size);
47 if (block == NULL) 51 if (block == NULL)
48 mem_error(); 52 mem_error();
49 return block; 53 return block;
50} 54}
51 55
52
53char *luaI_strdup (char *str)
54{
55 char *newstr = luaI_malloc(strlen(str)+1);
56 strcpy(newstr, str);
57 return newstr;
58}