diff --git a/src/ucl_parser.c b/src/ucl_parser.c index e70de4d..bbdfcc2 100644 --- a/src/ucl_parser.c +++ b/src/ucl_parser.c @@ -2691,6 +2691,9 @@ ucl_state_machine (struct ucl_parser *parser) return false; } break; + case UCL_STATE_ERROR: + /* Already in the error state */ + return false; default: ucl_set_err (parser, UCL_EINTERNAL, "internal error: parser is in an unknown state", &parser->err); diff --git a/src/ucl_util.c b/src/ucl_util.c index 74bbe4c..8f97c20 100644 --- a/src/ucl_util.c +++ b/src/ucl_util.c @@ -1100,6 +1100,11 @@ ucl_include_file_single (const unsigned char *data, size_t len, ucl_hash_t *container = NULL; struct ucl_stack *st = NULL; + if (parser->state == UCL_STATE_ERROR) { + /* Return immediately if we are in the error state... */ + return false; + } + snprintf (filebuf, sizeof (filebuf), "%.*s", (int)len, data); if (ucl_realpath (filebuf, realbuf) == NULL) { if (params->soft_fail) {