Skip to content
Snippets Groups Projects
Commit b427d6ae authored by Damien George's avatar Damien George
Browse files

py: Fix line number printing for file with 1 line.

With a file with 1 line (and an error on that line), used to show the
line as number 0.  Now shows it correctly as line number 1.

But, when line numbers are disabled, it now prints line number 1 for any
line that has an error (instead of 0 as previously).  This might end up
being confusing, but requires extra RAM and/or hack logic to make it
print something special in the case of no line numbers.
parent f05b87bd
No related branches found
No related tags found
No related merge requests found
...@@ -107,7 +107,7 @@ void mp_emit_glue_assign_native(mp_raw_code_t *rc, mp_raw_code_kind_t kind, void ...@@ -107,7 +107,7 @@ void mp_emit_glue_assign_native(mp_raw_code_t *rc, mp_raw_code_kind_t kind, void
#ifdef WRITE_CODE #ifdef WRITE_CODE
FILE *fp_write_code = fopen("out-code", "wb"); FILE *fp_write_code = fopen("out-code", "wb");
fwrite(fun_data, len, 1, fp_write_code); fwrite(fun_data, fun_len, 1, fp_write_code);
fclose(fp_write_code); fclose(fp_write_code);
#endif #endif
#endif #endif
......
...@@ -925,14 +925,11 @@ exception_handler: ...@@ -925,14 +925,11 @@ exception_handler:
mp_uint_t code_info_size = code_info[0] | (code_info[1] << 8) | (code_info[2] << 16) | (code_info[3] << 24); mp_uint_t code_info_size = code_info[0] | (code_info[1] << 8) | (code_info[2] << 16) | (code_info[3] << 24);
qstr source_file = code_info[4] | (code_info[5] << 8) | (code_info[6] << 16) | (code_info[7] << 24); qstr source_file = code_info[4] | (code_info[5] << 8) | (code_info[6] << 16) | (code_info[7] << 24);
qstr block_name = code_info[8] | (code_info[9] << 8) | (code_info[10] << 16) | (code_info[11] << 24); qstr block_name = code_info[8] | (code_info[9] << 8) | (code_info[10] << 16) | (code_info[11] << 24);
mp_uint_t source_line = 0;
mp_uint_t bc = code_state->ip - code_info - code_info_size; mp_uint_t bc = code_state->ip - code_info - code_info_size;
//printf("find %lu %d %d\n", bc, code_info[12], code_info[13]); //printf("find %lu %d %d\n", bc, code_info[12], code_info[13]);
const byte* ci = code_info + 12; mp_uint_t source_line = 1;
if (*ci) {
source_line = 1;
mp_uint_t c; mp_uint_t c;
while ((c = *ci)) { for (const byte *ci = code_info + 12; (c = *ci);) {
mp_uint_t b, l; mp_uint_t b, l;
if ((c & 0x80) == 0) { if ((c & 0x80) == 0) {
// 0b0LLBBBBB encoding // 0b0LLBBBBB encoding
...@@ -953,7 +950,6 @@ exception_handler: ...@@ -953,7 +950,6 @@ exception_handler:
break; break;
} }
} }
}
mp_obj_exception_add_traceback(nlr.ret_val, source_file, source_line, block_name); mp_obj_exception_add_traceback(nlr.ret_val, source_file, source_line, block_name);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment