aboutsummaryrefslogtreecommitdiffstats
path: root/libautomata_compile_kmp_automaton.c
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2025-12-28 14:00:33 +0100
committerMattias Andrée <m@maandree.se>2026-02-22 15:26:49 +0100
commite12b1cc372e0c64a7c2fb76bc08a72381808d89d (patch)
treefc09dedc79b497baef6ba43d68d8fc2bd2f69fa1 /libautomata_compile_kmp_automaton.c
parentfix readme (diff)
downloadlibautomata-e12b1cc372e0c64a7c2fb76bc08a72381808d89d.tar.gz
libautomata-e12b1cc372e0c64a7c2fb76bc08a72381808d89d.tar.bz2
libautomata-e12b1cc372e0c64a7c2fb76bc08a72381808d89d.tar.xz
Some fixes and generic automatonHEADmaster
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to '')
-rw-r--r--libautomata_compile_kmp_automaton.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/libautomata_compile_kmp_automaton.c b/libautomata_compile_kmp_automaton.c
index 3917b00..46b0430 100644
--- a/libautomata_compile_kmp_automaton.c
+++ b/libautomata_compile_kmp_automaton.c
@@ -24,15 +24,15 @@ libautomata_compile_kmp_automaton(const void *pattern, size_t length, size_t ele
(!memcmp(&((const char *)pattern)[i * (WIDTH)], &((const char *)pattern)[j * (WIDTH)], (WIDTH)))
#define IMPLEMENT(EQ, EQ_PARAM, CASE)\
- while (i < length) {\
- if (j != SIZE_MAX && !(EQ(EQ_PARAM)))\
- j = ret->next[j];\
- i++;\
- j++;\
- if (EQ(EQ_PARAM))\
+ for (; i < length; i++, j++) {\
+ if (EQ(EQ_PARAM)) {\
ret->next[i] = ret->next[j];\
- else CASE:\
+ } else {\
+ CASE:\
ret->next[i] = j;\
+ while (j != SIZE_MAX && !(EQ(EQ_PARAM)))\
+ j = ret->next[j];\
+ }\
}\
return ret