diff options
-rw-r--r-- | tests/test_template.c | 32 |
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 = ÷r}, }; - 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; |