summaryrefslogtreecommitdiff
path: root/src/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/common.c b/src/common.c
index c50ea61..1b1323e 100644
--- a/src/common.c
+++ b/src/common.c
@@ -30,10 +30,19 @@ void set_int_field (lua_State *L, const char* field, int val)
void *Lmalloc(lua_State *L, size_t size) {
void *ud;
lua_Alloc lalloc = lua_getallocf(L, &ud);
- void *p = lalloc(ud, NULL, 0, size);
- if(p == NULL)
- luaL_error(L, "malloc failed");
- return p;
+ return lalloc(ud, NULL, 0, size);
+}
+
+void *Lrealloc(lua_State *L, void *p, size_t osize, size_t nsize) {
+ void *ud;
+ lua_Alloc lalloc = lua_getallocf(L, &ud);
+ return lalloc(ud, p, osize, nsize);
+}
+
+void Lfree(lua_State *L, void *p, size_t osize) {
+ void *ud;
+ lua_Alloc lalloc = lua_getallocf(L, &ud);
+ lalloc(ud, p, osize, 0);
}
/* This function fills a table with string-number pairs.
@@ -117,9 +126,7 @@ void freelist_free (TFreeList *fl) {
enum { ID_NUMBER, ID_STRING };
void buffer_init (TBuffer *buf, size_t sz, lua_State *L, TFreeList *fl) {
- void *ud;
- lua_Alloc lalloc = lua_getallocf(L, &ud);
- buf->arr = (char*) lalloc (ud, NULL, 0, sz);
+ buf->arr = Lmalloc(L, sz);
if (!buf->arr) {
freelist_free (fl);
luaL_error (L, "malloc failed");
@@ -132,9 +139,7 @@ void buffer_init (TBuffer *buf, size_t sz, lua_State *L, TFreeList *fl) {
}
void buffer_free (TBuffer *buf) {
- void *ud;
- lua_Alloc lalloc = lua_getallocf(buf->L, &ud);
- lalloc (ud, buf->arr, buf->size, 0);
+ Lfree(buf->L, buf->arr, buf->size);
}
void buffer_clear (TBuffer *buf) {
@@ -152,9 +157,7 @@ void buffer_addbuffer (TBuffer *trg, TBuffer *src) {
void buffer_addlstring (TBuffer *buf, const void *src, size_t sz) {
size_t newtop = buf->top + sz;
if (newtop > buf->size) {
- void *ud;
- lua_Alloc lalloc = lua_getallocf(buf->L, &ud);
- char *p = (char*) lalloc (ud, buf->arr, buf->size, 2 * newtop); /* 2x expansion */
+ char *p = (char*) Lrealloc (buf->L, buf->arr, buf->size, 2 * newtop); /* 2x expansion */
if (!p) {
freelist_free (buf->freelist);
luaL_error (buf->L, "realloc failed");