summaryrefslogtreecommitdiff
path: root/src/lib/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/memory.c')
-rw-r--r--src/lib/memory.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/lib/memory.c b/src/lib/memory.c
index 136c7e6..41ac90d 100644
--- a/src/lib/memory.c
+++ b/src/lib/memory.c
@@ -18,7 +18,7 @@ alloc(struct memory *m, size_t size, size_t align)
size_t alloc_size, adjust;
void *p;
- ptr = (uintptr_t)m->data;
+ ptr = ((uintptr_t)m->data) + m->offset;
alloc_size = size;
if(NEVER(align == 0))
@@ -30,6 +30,7 @@ alloc(struct memory *m, size_t size, size_t align)
if((m->size - m->offset) >= alloc_size){
p = m->data+m->offset+alloc_size-size;
+ assert((((uintptr_t)p) % align) == 0);
m->offset += alloc_size;
memset(p, 0, size);
}else
@@ -85,3 +86,19 @@ memory_free_string(struct memory *m, struct string *p)
UNUSED_PARAMETER(m);
UNUSED_PARAMETER(p);
}
+
+struct token_list *
+memory_alloc_token_list(struct memory *m, size_t tokens)
+{
+ struct token_list *p;
+
+ p = alloc(m, sizeof(struct token_list) + (tokens * sizeof(struct token)), alignof(struct token_list));
+ return p;
+}
+
+void
+memory_free_token_list(struct memory *m, struct token_list *p)
+{
+ UNUSED_PARAMETER(m);
+ UNUSED_PARAMETER(p);
+}