summaryrefslogtreecommitdiff
path: root/tests/aplwc_eval.c
diff options
context:
space:
mode:
authorpeter <peter@pmikkelsen.com>2026-08-31 20:22:47 +0000
committerpeter <peter@pmikkelsen.com>2026-08-31 20:22:47 +0000
commit8b0beb9e6a57c1d4f1e7b0b06523dd0fc538771a (patch)
tree9bb8b689020d5098ea3c31251ddcd2fbb9524a7c /tests/aplwc_eval.c
parentd361abaeb8dcf19446a9322737ea600b22568a5b (diff)
parentf9f9b10c1d17077632d7a09e447e629b8d33b23d (diff)
Merge memory manager changes into trunk
FossilOrigin-Name: af583e3ba70b2d10efdead8e03a42fe5c1b94d6b387522833606c138b527a653
Diffstat (limited to 'tests/aplwc_eval.c')
-rw-r--r--tests/aplwc_eval.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/tests/aplwc_eval.c b/tests/aplwc_eval.c
index 8f6abe0..3fd8c27 100644
--- a/tests/aplwc_eval.c
+++ b/tests/aplwc_eval.c
@@ -1,15 +1,31 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <aplwc.h>
+static void *
+my_alloc(size_t min, size_t max, size_t *actual)
+{
+ (void)max;
+
+ *actual = min;
+ return malloc(min);
+}
+
+static void
+my_dealloc(void *p)
+{
+ free(p);
+}
+
int
main(int argc, char *argv[])
{
- uint8_t data[APLWC_MIN_MEM+1000];
char *input;
struct aplwc *aplwc;
- struct aplwc_line *line;
- struct aplwc_value *value;
+ AplwcLine line;
+ AplwcValue value;
+ struct aplwc_fns fns;
enum aplwc_rc ret;
FILE *f;
long input_size;
@@ -35,7 +51,12 @@ main(int argc, char *argv[])
return 1;
input[input_size] = 0;
- ret = aplwc_new(&aplwc, data, sizeof(data));
+
+ memset(&fns, 0, sizeof(fns));
+ fns.alloc = my_alloc;
+ fns.dealloc = my_dealloc;
+
+ aplwc = aplwc_new(fns, &ret);
if(ret)
return 1;
@@ -45,11 +66,11 @@ main(int argc, char *argv[])
input[i] = 0;
line = aplwc_read(aplwc, &input[j]);
- if(line == NULL)
+ if(!aplwc_valid_line(line))
return 1;
value = aplwc_eval(line);
- if((value == NULL) && (aplwc_last_error(aplwc) != APLWC_OUT_OF_MEMORY))
+ if((!aplwc_valid_value(value)) && (aplwc_last_error(aplwc) != APLWC_OUT_OF_MEMORY))
return 1;
aplwc_free_value(value);