aboutsummaryrefslogtreecommitdiff
path: root/ldebug.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldebug.c')
-rw-r--r--ldebug.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ldebug.c b/ldebug.c
index 8e3657a9..1feaab22 100644
--- a/ldebug.c
+++ b/ldebug.c
@@ -50,6 +50,8 @@ static int currentpc (CallInfo *ci) {
50** an integer division gets the right place. When the source file has 50** an integer division gets the right place. When the source file has
51** large sequences of empty/comment lines, it may need extra entries, 51** large sequences of empty/comment lines, it may need extra entries,
52** so the original estimate needs a correction. 52** so the original estimate needs a correction.
53** If the original estimate is -1, the initial 'if' ensures that the
54** 'while' will run at least once.
53** The assertion that the estimate is a lower bound for the correct base 55** The assertion that the estimate is a lower bound for the correct base
54** is valid as long as the debug info has been generated with the same 56** is valid as long as the debug info has been generated with the same
55** value for MAXIWTHABS or smaller. (Previous releases use a little 57** value for MAXIWTHABS or smaller. (Previous releases use a little
@@ -63,7 +65,8 @@ static int getbaseline (const Proto *f, int pc, int *basepc) {
63 else { 65 else {
64 int i = cast_uint(pc) / MAXIWTHABS - 1; /* get an estimate */ 66 int i = cast_uint(pc) / MAXIWTHABS - 1; /* get an estimate */
65 /* estimate must be a lower bond of the correct base */ 67 /* estimate must be a lower bond of the correct base */
66 lua_assert(i < f->sizeabslineinfo && f->abslineinfo[i].pc <= pc); 68 lua_assert(i < 0 ||
69 (i < f->sizeabslineinfo && f->abslineinfo[i].pc <= pc));
67 while (i + 1 < f->sizeabslineinfo && pc >= f->abslineinfo[i + 1].pc) 70 while (i + 1 < f->sizeabslineinfo && pc >= f->abslineinfo[i + 1].pc)
68 i++; /* low estimate; adjust it */ 71 i++; /* low estimate; adjust it */
69 *basepc = f->abslineinfo[i].pc; 72 *basepc = f->abslineinfo[i].pc;