From 5996477a5e96086501fd9140aa877c08d65edc3c Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" <pesco@khjk.org> Date: Mon, 30 Nov 2015 17:50:29 +0100 Subject: [PATCH] out-of-memory handling in packrat backend --- src/backends/packrat.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/backends/packrat.c b/src/backends/packrat.c index abb198b0..b7e47aef 100644 --- a/src/backends/packrat.c +++ b/src/backends/packrat.c @@ -254,6 +254,15 @@ static bool pos_equal(const void* key1, const void* key2) { HParseResult *h_packrat_parse(HAllocator* mm__, const HParser* parser, HInputStream *input_stream) { HArena * arena = h_new_arena(mm__, 0); + + // out-of-memory handling + jmp_buf except; + h_arena_set_except(arena, &except); + if(setjmp(except)) { + h_delete_arena(arena); + return NULL; + } + HParseState *parse_state = a_new_(arena, HParseState, 1); parse_state->cache = h_hashtable_new(arena, cache_key_equal, // key_equal_func cache_key_hash); // hash_func -- GitLab