diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2013-09-24 16:39:32 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2013-09-24 16:39:32 +0300 |
commit | 7234d4a6c1ef8763ab6ac25619f8a225260d60b8 (patch) | |
tree | 86f67ae6ab3aef4e8837afb2acd3a9ab0fe99c84 /debug.c | |
parent | 8aa14c5f3cf78f90b589785a9ffe5f7f02050b37 (diff) | |
parent | 08e8087fc3b1b9839e464ee436e8b24a45b024aa (diff) | |
download | egawk-7234d4a6c1ef8763ab6ac25619f8a225260d60b8.tar.gz egawk-7234d4a6c1ef8763ab6ac25619f8a225260d60b8.tar.bz2 egawk-7234d4a6c1ef8763ab6ac25619f8a225260d60b8.zip |
Merge branch 'gawk-4.1-stable'
Diffstat (limited to 'debug.c')
-rw-r--r-- | debug.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -2068,12 +2068,18 @@ find_rule(char *src, long lineno) { INSTRUCTION *rp; - assert(lineno > 0); - for (rp = rule_list->nexti; rp != NULL; rp = rp->nexti) { - if ((rp - 1)->source_file == src - && lineno >= (rp + 1)->first_line - && lineno <= (rp + 1)->last_line) - return (rp - 1); + if (lineno == 0) { + for (rp = rule_list->nexti; rp != NULL; rp = rp->nexti) { + if ((rp - 1)->source_file == src && (rp - 1)->source_line > 0) + return (rp - 1); + } + } else { + for (rp = rule_list->nexti; rp != NULL; rp = rp->nexti) { + if ((rp - 1)->source_file == src + && lineno >= (rp + 1)->first_line + && lineno <= (rp + 1)->last_line) + return (rp - 1); + } } return NULL; } |