Floating point division is now relying on underlying FPU and IEEE for behavior with respect to divide by 0
Showing the changes to src/vm/thread.cpp (1 of 11 files). Show all
Unified · Split
| @@ -255,7 +255,7 @@ vm_thread_state_t vm_thread_t::execute(vm_t &vm, const uint32_t quanta) · 254 unmodified lines | ||
| 255 | 255 | } |
| 256 | 256 | catch (const unhandled_user_exception &uue) |
| 257 | 257 | { |
| 258 | − _error_message = calloc_memory<char>(max_error_message); | |
| 258 | + _error_message = alloc_memory<char>(max_error_message); | |
| 259 | 259 | const int ec = std::snprintf(_error_message, max_error_message, "%s in %s @%d\n %s", uue.what(), uue.module_name, uue.program_counter, uue.exception_id); |
| 260 | 260 | assert(ec > 0 && ec < max_error_message); |
| 261 | 261 | (void)ec; |
| @@ -263,7 +263,7 @@ vm_thread_state_t vm_thread_t::execute(vm_t &vm, const uint32_t quanta) · 1 unmodified line | ||
| 263 | 263 | } |
| 264 | 264 | catch (const index_out_of_range_memory &ioor) |
| 265 | 265 | { |
| 266 | − _error_message = calloc_memory<char>(max_error_message); | |
| 266 | + _error_message = alloc_memory<char>(max_error_message); | |
| 267 | 267 | const int ec = std::snprintf(_error_message, max_error_message, "%s - %d [%d,%d]", ioor.what(), ioor.invalid_value, ioor.valid_min, ioor.valid_max); |
| 268 | 268 | assert(ec > 0 && ec < max_error_message); |
| 269 | 269 | (void)ec; |
| @@ -271,7 +271,8 @@ vm_thread_state_t vm_thread_t::execute(vm_t &vm, const uint32_t quanta) · 1 unmodified line | ||
| 271 | 271 | } |
| 272 | 272 | catch (const vm_user_exception &ue) |
| 273 | 273 | { |
| 274 | − _error_message = calloc_memory<char>(max_error_message); | |
| 274 | + // [TODO] Include the module and IP to aid in debugging. | |
| 275 | + _error_message = alloc_memory<char>(max_error_message); | |
| 275 | 276 | const int ec = std::snprintf(_error_message, max_error_message, "%s", ue.what()); |
| 276 | 277 | assert(ec > 0 && ec < max_error_message); |
| 277 | 278 | (void)ec; |