From 34dbad165390fd8d51ad39371f4a025452f90ca3 Mon Sep 17 00:00:00 2001 From: hanez Date: Fri, 26 Sep 2025 09:20:12 +0200 Subject: [PATCH] Some fixes to make it compile on FreeBSD. --- src/parser.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/parser.c b/src/parser.c index bb0ab63..faf8f53 100644 --- a/src/parser.c +++ b/src/parser.c @@ -2068,15 +2068,12 @@ static void parse_block(Bytecode *bc, const char *src, size_t len, size_t *pos, memset(param_kind, 0, sizeof(param_kind)); /* kind: 1=Number (numeric types incl. boolean), 2=String, 3=Nil */ - auto int map_type_kind(const char *t) { - if (!t) return 0; - if (strcmp(t, "string") == 0) return 2; - if (strcmp(t, "nil") == 0) return 3; - if (strcmp(t, "boolean") == 0) return 1; - if (strcmp(t, "number") == 0) return 1; - if (strncmp(t, "uint", 4) == 0 || strncmp(t, "sint", 4) == 0 || strncmp(t, "int", 3) == 0) return 1; - return 0; /* unknown -> treat as number-like? keep as 0 => no check */ - } + /* helper macro instead of nested function (C99 compliant) */ + #define MAP_TYPE_KIND(t) ( \ + ((t) && strcmp((t), "string")==0) ? 2 : \ + ((t) && strcmp((t), "nil")==0) ? 3 : \ + ((t) && (strcmp((t), "boolean")==0 || strcmp((t), "number")==0 || strncmp((t), "uint", 4)==0 || strncmp((t), "sint", 4)==0 || strncmp((t), "int", 3)==0)) ? 1 : \ + 0 ) skip_spaces(src, len, pos); if (*pos < len && src[*pos] == '(') { @@ -2106,7 +2103,7 @@ static void parse_block(Bytecode *bc, const char *src, size_t len, size_t *pos, return; } param_names[pcount] = pname; - param_kind[pcount] = map_type_kind(tname); + param_kind[pcount] = MAP_TYPE_KIND(tname); free(tname); pcount++;