diff --git a/py/objstr.c b/py/objstr.c
index 17d06f88e8977c99be19687dc0a0be2d5494f669..2331004a5bac6c68d89adf2f441c79e2da210694 100644
--- a/py/objstr.c
+++ b/py/objstr.c
@@ -354,7 +354,7 @@ mp_obj_t mp_obj_str_binary_op(mp_uint_t op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
     switch (op) {
         case MP_BINARY_OP_ADD:
         case MP_BINARY_OP_INPLACE_ADD: {
-            if (lhs_len == 0) {
+            if (lhs_len == 0 && mp_obj_get_type(rhs_in) == lhs_type) {
                 return rhs_in;
             }
             if (rhs_len == 0) {