Skip to content

Commit 9dd5e37

Browse files
committed
TEST: null traceback
1 parent c718974 commit 9dd5e37

File tree

1 file changed

+1
-60
lines changed

1 file changed

+1
-60
lines changed

py/objexcept.c

Lines changed: 1 addition & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -570,66 +570,7 @@ void mp_obj_exception_clear_traceback(mp_obj_t self_in) {
570570
}
571571

572572
void mp_obj_exception_add_traceback(mp_obj_t self_in, qstr file, size_t line, qstr block) {
573-
mp_obj_exception_t *self = get_native_exception(self_in);
574-
575-
// append this traceback info to traceback data
576-
// if memory allocation fails (eg because gc is locked), just return
577-
578-
#if MICROPY_PY_SYS_TRACEBACKLIMIT
579-
mp_int_t max_traceback = MP_OBJ_SMALL_INT_VALUE(MP_STATE_VM(sys_mutable[MP_SYS_MUTABLE_TRACEBACKLIMIT]));
580-
if (max_traceback <= 0) {
581-
return;
582-
} else if (self->traceback_data != NULL && self->traceback_len >= max_traceback * TRACEBACK_ENTRY_LEN) {
583-
self->traceback_len -= TRACEBACK_ENTRY_LEN;
584-
memmove(self->traceback_data, self->traceback_data + TRACEBACK_ENTRY_LEN, self->traceback_len * sizeof(self->traceback_data[0]));
585-
}
586-
#endif
587-
588-
if (self->traceback_data == NULL) {
589-
self->traceback_data = m_new_maybe(size_t, TRACEBACK_ENTRY_LEN);
590-
if (self->traceback_data == NULL) {
591-
#if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF
592-
if (mp_emergency_exception_buf_size >= (mp_int_t)(EMG_BUF_TRACEBACK_OFFSET + EMG_BUF_TRACEBACK_SIZE)) {
593-
// There is room in the emergency buffer for traceback data
594-
size_t *tb = (size_t *)((uint8_t *)MP_STATE_VM(mp_emergency_exception_buf)
595-
+ EMG_BUF_TRACEBACK_OFFSET);
596-
self->traceback_data = tb;
597-
self->traceback_alloc = EMG_BUF_TRACEBACK_SIZE / sizeof(size_t);
598-
} else {
599-
// Can't allocate and no room in emergency buffer
600-
return;
601-
}
602-
#else
603-
// Can't allocate
604-
return;
605-
#endif
606-
} else {
607-
// Allocated the traceback data on the heap
608-
self->traceback_alloc = TRACEBACK_ENTRY_LEN;
609-
}
610-
self->traceback_len = 0;
611-
} else if (self->traceback_len + TRACEBACK_ENTRY_LEN > self->traceback_alloc) {
612-
#if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF
613-
if (self->traceback_data == (size_t *)MP_STATE_VM(mp_emergency_exception_buf)) {
614-
// Can't resize the emergency buffer
615-
return;
616-
}
617-
#endif
618-
// be conservative with growing traceback data
619-
size_t *tb_data = m_renew_maybe(size_t, self->traceback_data, self->traceback_alloc,
620-
self->traceback_alloc + TRACEBACK_ENTRY_LEN, true);
621-
if (tb_data == NULL) {
622-
return;
623-
}
624-
self->traceback_data = tb_data;
625-
self->traceback_alloc += TRACEBACK_ENTRY_LEN;
626-
}
627-
628-
size_t *tb_data = &self->traceback_data[self->traceback_len];
629-
self->traceback_len += TRACEBACK_ENTRY_LEN;
630-
tb_data[0] = file;
631-
tb_data[1] = line;
632-
tb_data[2] = block;
573+
return;
633574
}
634575

635576
void mp_obj_exception_get_traceback(mp_obj_t self_in, size_t *n, size_t **values) {

0 commit comments

Comments
 (0)