From 1603a1029f44f0fdc87c65b02063229962194f84 Mon Sep 17 00:00:00 2001 From: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> Date: Mon, 20 Jun 2022 17:13:39 +0100 Subject: GH-93249: relax overly strict assertion on bounds->ar_start (GH-93961) --- Objects/codeobject.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'Objects/codeobject.c') diff --git a/Objects/codeobject.c b/Objects/codeobject.c index c1f696dc572..707de11d479 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -826,6 +826,11 @@ next_code_delta(PyCodeAddressRange *bounds) static int previous_code_delta(PyCodeAddressRange *bounds) { + if (bounds->ar_start == 0) { + // If we looking at the first entry, the + // "previous" entry has an implicit length of 1. + return 1; + } const uint8_t *ptr = bounds->opaque.lo_next-1; while (((*ptr) & 128) == 0) { ptr--; @@ -869,7 +874,7 @@ static void retreat(PyCodeAddressRange *bounds) { ASSERT_VALID_BOUNDS(bounds); - assert(bounds->ar_start > 0); + assert(bounds->ar_start >= 0); do { bounds->opaque.lo_next--; } while (((*bounds->opaque.lo_next) & 128) == 0); -- cgit v1.2.3