diff options
Diffstat (limited to 'src/lua/ldebug.c')
| -rw-r--r-- | src/lua/ldebug.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lua/ldebug.c b/src/lua/ldebug.c index 8e3657a..1feaab2 100644 --- a/src/lua/ldebug.c +++ b/src/lua/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; |
