Skip to content

Commit ba4f018

Browse files
authored
[mypyc] Release new instances when __init__ raises (#21248)
Found by @devdanzin
1 parent c65ed9a commit ba4f018

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

mypyc/codegen/emitclass.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -836,7 +836,8 @@ def generate_new_for_class(
836836
emitter.emit_line(
837837
f"PyObject *ret = {PREFIX}{init_fn.cname(emitter.names)}(self, args, kwds);"
838838
)
839-
emitter.emit_lines("if (ret == NULL)", " return NULL;")
839+
emitter.emit_lines("if (ret == NULL) {", " Py_DECREF(self);", " return NULL;", "}")
840+
emitter.emit_line("Py_DECREF(ret);")
840841
emitter.emit_line("return self;")
841842
emitter.emit_line("}")
842843

0 commit comments

Comments
 (0)