From e12b1cc372e0c64a7c2fb76bc08a72381808d89d Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 28 Dec 2025 14:00:33 +0100 Subject: Some fixes and generic automaton MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- libautomata_grow_automaton.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 libautomata_grow_automaton.c (limited to 'libautomata_grow_automaton.c') diff --git a/libautomata_grow_automaton.c b/libautomata_grow_automaton.c new file mode 100644 index 0000000..98ce12f --- /dev/null +++ b/libautomata_grow_automaton.c @@ -0,0 +1,27 @@ +/* See LICENSE file for copyright and license details. */ +#include "common.h" + + +int +libautomata_grow_automaton(struct libautomata_automaton *automaton, size_t n) +{ + struct libautomata_node *new; + size_t size; + + if (automaton->nnodes > SIZE_MAX - n) + goto enomem; + size = automaton->nnodes + n; + if (size > SIZE_MAX / sizeof(*automaton->nodes)) + goto enomem; + size *= sizeof(*automaton->nodes); + + new = realloc(automaton->nodes, size); + if (!new) { + enomem: + errno = ENOMEM; + return -1; + } + automaton->nodes = new; + + return 0; +} -- cgit v1.2.3-70-g09d2