@@ -570,66 +570,7 @@ void mp_obj_exception_clear_traceback(mp_obj_t self_in) {
570570}
571571
572572void 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
635576void mp_obj_exception_get_traceback (mp_obj_t self_in , size_t * n , size_t * * values ) {
0 commit comments