diff --git a/py/runtime.c b/py/runtime.c
index 2b5b5bc371a2ab2593a7c563b17c43aaf023e702..68728642bfd2aa8d32286cfc1524f6ebba074645 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -1081,7 +1081,7 @@ mp_vm_return_kind_t mp_resume(mp_obj_t self_in, mp_obj_t send_value, mp_obj_t th
 
     if (type->iternext != NULL && send_value == mp_const_none) {
         mp_obj_t ret = type->iternext(self_in);
-        if (ret != MP_OBJ_NULL) {
+        if (ret != MP_OBJ_STOP_ITERATION) {
             *ret_val = ret;
             return MP_VM_RETURN_YIELD;
         } else {
diff --git a/tests/basics/gen_yield_from_iter.py b/tests/basics/gen_yield_from_iter.py
index 2d06328fbb4970baa2dcfd50f7e78c3684d644a9..be76572bf99bccbf4fd91466133ac7374af4be57 100644
--- a/tests/basics/gen_yield_from_iter.py
+++ b/tests/basics/gen_yield_from_iter.py
@@ -4,5 +4,10 @@ def gen():
 def gen2():
     yield from gen()
 
+def gen3():
+    yield from (4, 5)
+    yield 6
+
 print(list(gen()))
 print(list(gen2()))
+print(list(gen3()))