From fe2bc92b4d20c116fbb14b6fe92db459d8ce2126 Mon Sep 17 00:00:00 2001
From: Mike Wadsten <mikewadsten@gmail.com>
Date: Mon, 13 Jan 2020 11:51:04 -0600
Subject: [PATCH] py/runtime: Fix crash when exc __new__ doesn't return an exc
 instance.

See CPython bug https://bugs.python.org/issue39091 for more details.
---
 py/runtime.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/py/runtime.c b/py/runtime.c
index 0133d813f7..27e77fc290 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -1372,8 +1372,10 @@ mp_obj_t mp_make_raise_obj(mp_obj_t o) {
         // create and return a new exception instance by calling o
         // TODO could have an option to disable traceback, then builtin exceptions (eg TypeError)
         // could have const instances in ROM which we return here instead
-        return mp_call_function_n_kw(o, 0, 0, NULL);
-    } else if (mp_obj_is_exception_instance(o)) {
+        o = mp_call_function_n_kw(o, 0, 0, NULL);
+    }
+
+    if (mp_obj_is_exception_instance(o)) {
         // o is an instance of an exception, so use it as the exception
         return o;
     } else {
-- 
GitLab