aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/test_template.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/tests/test_template.c b/tests/test_template.c
index d6c2c42..432dfa6 100644
--- a/tests/test_template.c
+++ b/tests/test_template.c
@@ -9,28 +9,36 @@ extern unsigned tpl_pool_func_used;
static int adder(struct tplfunc_frame *frame, void *result) {
int a = (int) strtol(frame->argv[0].t_char_ptr, NULL, 10);
int b = (int) strtol(frame->argv[1].t_char_ptr, NULL, 10);
- sprintf(result, "%d", a + b);
+ char **ptr = (char **) result;
+ *ptr = calloc(100, sizeof(*ptr));
+ sprintf(*ptr, "%d", a + b);
return 0;
}
static int subtractor(struct tplfunc_frame *frame, void *result) {
int a = (int) strtol(frame->argv[0].t_char_ptr, NULL, 10);
int b = (int) strtol(frame->argv[1].t_char_ptr, NULL, 10);
- sprintf(result, "%d", a - b);
+ char **ptr = (char **) result;
+ *ptr = calloc(100, sizeof(*ptr));
+ sprintf(*ptr, "%d", a - b);
return 0;
}
static int multiplier(struct tplfunc_frame *frame, void *result) {
int a = (int) strtol(frame->argv[0].t_char_ptr, NULL, 10);
int b = (int) strtol(frame->argv[1].t_char_ptr, NULL, 10);
- sprintf(result, "%d", a * b);
+ char **ptr = (char **) result;
+ *ptr = calloc(100, sizeof(*ptr));
+ sprintf(*ptr, "%d", a * b);
return 0;
}
static int divider(struct tplfunc_frame *frame, void *result) {
int a = (int) strtol(frame->argv[0].t_char_ptr, NULL, 10);
int b = (int) strtol(frame->argv[1].t_char_ptr, NULL, 10);
- sprintf(result, "%d", a / b);
+ char **ptr = (char **) result;
+ *ptr = calloc(100, sizeof(*ptr));
+ sprintf(*ptr, "%d", a / b);
return 0;
}
@@ -65,15 +73,15 @@ void test_tpl_register_func() {
void *func;
};
struct testcase tc[] = {
- {.key = "add", .argc = 2, .func = adder},
- {.key = "sub", .argc = 2, .func = subtractor},
- {.key = "mul", .argc = 2, .func = multiplier},
- {.key = "div", .argc = 2, .func = divider},
+ {.key = "add", .argc = 2, .func = &adder},
+ {.key = "sub", .argc = 2, .func = &subtractor},
+ {.key = "mul", .argc = 2, .func = &multiplier},
+ {.key = "div", .argc = 2, .func = &divider},
};
- tpl_register_func("add", &tc[0].func, tc[0].argc);
- tpl_register_func("sub", &tc[1].func, tc[1].argc);
- tpl_register_func("mul", &tc[2].func, tc[2].argc);
- tpl_register_func("div", &tc[3].func, tc[3].argc);
+ tpl_register_func("add", tc[0].func, tc[0].argc);
+ tpl_register_func("sub", tc[1].func, tc[1].argc);
+ tpl_register_func("mul", tc[2].func, tc[2].argc);
+ tpl_register_func("div", tc[3].func, tc[3].argc);
STASIS_ASSERT(tpl_pool_func_used == sizeof(tc) / sizeof(*tc), "unexpected function pool used");
char *result = NULL;