Skip to content

Commit

Permalink
memory handling
Browse files Browse the repository at this point in the history
  • Loading branch information
Kyle Maxwell committed Nov 24, 2008
1 parent efb6e2a commit 5c7e976
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 13 deletions.
10 changes: 5 additions & 5 deletions src/dexter.c
Expand Up @@ -12,15 +12,11 @@
#include <ctype.h>
#include <stdbool.h>

char* dex_parsing_context;
int dex_debug_mode = 0;

char* dex_set_debug_mode(int i) {
dex_debug_mode = i;
}

char* dex_compile(char* dex, char* incl) {
obstack_init (&dex_obstack);
fprintf(stderr, "obstack init\n");

struct json_object *json = json_tokener_parse(dex);
Expand Down Expand Up @@ -61,10 +57,14 @@ char* dex_compile(char* dex, char* incl) {
char* output = strdup(buf->buf);
printbuf_free(buf);
fprintf(stderr, "obstack free\n");
obstack_free(&dex_obstack, NULL);
return output;
}


void * __dex_alloc(int size) {
return obstack_alloc(&dex_obstack, size);
}

void __dex_recurse_object(struct json_object * json, struct printbuf* buf, char *context) {
char *tag;
char *ptr;
Expand Down
5 changes: 5 additions & 0 deletions src/dexter.h
Expand Up @@ -4,16 +4,21 @@
#define DEX_BUF_SIZE 1024

#include "obstack.h"

#define obstack_chunk_alloc malloc
#define obstack_chunk_free free

static struct obstack dex_obstack;
static char* dex_parsing_context;
static int dex_debug_mode = 0;

#include <json/json.h>

char* dex_compile(char* dex, char* incl);
char* dex_set_debug_mode(int);
void dex_error(char*);

void* __dex_alloc(int);
void __dex_recurse(struct json_object *, struct printbuf*, char*);
void __dex_recurse_object(struct json_object *, struct printbuf*, char*);
void __dex_recurse_array(struct json_object *, struct printbuf*, char*);
Expand Down
15 changes: 7 additions & 8 deletions src/kstring.c
Expand Up @@ -11,44 +11,43 @@ char* astrdup(char* c) {
}

char* astrcat(char* a, char* b) {
// char* output = (char*) obstack_alloc(&dex_obstack, sizeof(char) * (strlen(a) + strlen(b) + 1));
char* output = (char*) malloc(sizeof(char) * (strlen(a) + strlen(b) + 1));
char* output = (char*) __dex_alloc(sizeof(char) * (strlen(a) + strlen(b) + 1));
sprintf(output, "%s%s", a, b);
return output;
}

char* astrcat3(char* a, char* b, char* c) {
char* output = (char*) malloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + 1));
char* output = (char*) __dex_alloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + 1));
sprintf(output, "%s%s%s", a, b, c);
return output;
}

char* astrcat4(char* a, char* b, char* c, char* d) {
char* output = (char*) malloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + 1));
char* output = (char*) __dex_alloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + 1));
sprintf(output, "%s%s%s%s", a, b, c, d);
return output;
}

char* astrcat5(char* a, char* b, char* c, char* d, char* e) {
char* output = (char*) malloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + strlen(e) + 1));
char* output = (char*) __dex_alloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + strlen(e) + 1));
sprintf(output, "%s%s%s%s%s", a, b, c, d, e);
return output;
}

char* astrcat6(char* a, char* b, char* c, char* d, char* e, char* f) {
char* output = (char*) malloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + strlen(e) + strlen(f) + 1));
char* output = (char*) __dex_alloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + strlen(e) + strlen(f) + 1));
sprintf(output, "%s%s%s%s%s%s", a, b, c, d, e, f);
return output;
}

char* astrcat9(char* a, char* b, char* c, char* d, char* e, char* f, char* g, char* h, char* i) {
char* output = (char*) malloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + strlen(e) + strlen(f) + strlen(g) + strlen(h) + strlen(i) + 1));
char* output = (char*) __dex_alloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + strlen(e) + strlen(f) + strlen(g) + strlen(h) + strlen(i) + 1));
sprintf(output, "%s%s%s%s%s%s%s%s%s", a, b, c, d, e, f, g, h, i);
return output;
}

char* astrcat10(char* a, char* b, char* c, char* d, char* e, char* f, char* g, char* h, char* i, char* j) {
char* output = (char*) malloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + strlen(e) + strlen(f) + strlen(g) + strlen(h) + strlen(i) + strlen(j) + 1));
char* output = (char*) __dex_alloc(sizeof(char) * (strlen(a) + strlen(b) + strlen(c) + strlen(d) + strlen(e) + strlen(f) + strlen(g) + strlen(h) + strlen(i) + strlen(j) + 1));
sprintf(output, "%s%s%s%s%s%s%s%s%s%s", a, b, c, d, e, f, g, h, i, j);
return output;
}

0 comments on commit 5c7e976

Please sign in to comment.