Fixed memory leaks

This commit is contained in:
Daniel Holden
2014-01-21 10:23:58 -05:00
parent 51dbf66b50
commit 8931782986
2 changed files with 17 additions and 11 deletions

View File

@@ -10,4 +10,4 @@ check: $(TESTS) mpc.c
./test
clean:
rm test.exe
rm test

26
mpc.c
View File

@@ -684,13 +684,21 @@ static mpc_stack_t *mpc_stack_new(const char *filename) {
return s;
}
static void mpc_stack_err(mpc_stack_t *s, mpc_err_t* e) {
mpc_err_t *errs[2];
errs[0] = s->err;
errs[1] = e;
s->err = mpc_err_or(errs, 2);
}
static int mpc_stack_terminate(mpc_stack_t *s, mpc_result_t *r) {
int success = s->returns[0];
if (success) {
*r = s->results[0];
r->output = s->results[0].output;
mpc_err_delete(s->err);
} else {
mpc_stack_err(s, s->results[0].error);
r->error = s->err;
}
@@ -703,13 +711,6 @@ static int mpc_stack_terminate(mpc_stack_t *s, mpc_result_t *r) {
return success;
}
static void mpc_stack_err(mpc_stack_t *s, mpc_err_t* e) {
mpc_err_t *errs[2];
errs[0] = s->err;
errs[1] = e;
s->err = mpc_err_or(errs, 2);
}
/* Stack Parser Stuff */
static void mpc_stack_set_state(mpc_stack_t *s, int x) {
@@ -1823,7 +1824,8 @@ static char *mpc_re_range_escape_char(char c) {
}
static mpc_val_t *mpcf_re_range(mpc_val_t *x) {
mpc_parser_t *out;
char *range = calloc(1,1);
char *tmp = NULL;
char *s = x;
@@ -1878,8 +1880,12 @@ static mpc_val_t *mpcf_re_range(mpc_val_t *x) {
}
out = comp ? mpc_noneof(range) : mpc_oneof(range);
free(x);
return comp ? mpc_noneof(range) : mpc_oneof(range);
free(range);
return out;
}
mpc_parser_t *mpc_re(const char *re) {