wingo pushed a commit to branch master in repository guile. commit 909c0077cc61b426f8aae609f456819b3ad466b8 Author: Andy Wingo <wi...@igalia.com> Date: Mon May 27 09:03:39 2019 +0200
Correctly handle overflow when emitting literal pools --- lightening/lightening.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lightening/lightening.c b/lightening/lightening.c index 4f03851..ca5708f 100644 --- a/lightening/lightening.c +++ b/lightening/lightening.c @@ -96,10 +96,6 @@ static struct jit_literal_pool* alloc_literal_pool(jit_state_t *_jit, size_t capacity); static void reset_literal_pool(jit_state_t *_jit, struct jit_literal_pool *pool); -static void grow_literal_pool(jit_state_t *_jit); -static jit_bool_t add_literal_pool_entry(jit_state_t *_jit, - struct jit_literal_pool_entry entry, - uint32_t max_offset); static jit_bool_t add_pending_literal(jit_state_t *_jit, jit_reloc_t src, uint8_t max_offset_bits); static void remove_pending_literal(jit_state_t *_jit, jit_reloc_t src); @@ -1279,9 +1275,11 @@ static jit_bool_t add_literal_pool_entry(jit_state_t *_jit, struct jit_literal_pool_entry entry, uint32_t max_offset) { + if (_jit->overflow) + return 1; + if (max_offset <= literal_pool_byte_size(_jit->pool)) { emit_literal_pool(_jit, GUARD_NEEDED); - ASSERT(_jit->pool->size == 0); return 0; }