/* 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; }