From bfb8819c0c7e924859dce07ca1388385a9af12b9 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Sun, 11 May 2014 21:17:28 +0300
Subject: [PATCH] objstr: Make .split() support bytes.

---
 py/objstr.c                  | 7 ++++---
 tests/basics/string_split.py | 2 ++
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/py/objstr.c b/py/objstr.c
index 7549dedb7..d062f05f8 100644
--- a/py/objstr.c
+++ b/py/objstr.c
@@ -411,6 +411,7 @@ STATIC mp_obj_t str_join(mp_obj_t self_in, mp_obj_t arg) {
 #define is_ws(c) ((c) == ' ' || (c) == '\t')
 
 STATIC mp_obj_t str_split(uint n_args, const mp_obj_t *args) {
+    const mp_obj_type_t *self_type = mp_obj_get_type(args[0]);
     machine_int_t splits = -1;
     mp_obj_t sep = mp_const_none;
     if (n_args > 1) {
@@ -432,7 +433,7 @@ STATIC mp_obj_t str_split(uint n_args, const mp_obj_t *args) {
         while (s < top && splits != 0) {
             const byte *start = s;
             while (s < top && !is_ws(*s)) s++;
-            mp_obj_list_append(res, mp_obj_new_str(start, s - start, false));
+            mp_obj_list_append(res, str_new(self_type, start, s - start));
             if (s >= top) {
                 break;
             }
@@ -443,7 +444,7 @@ STATIC mp_obj_t str_split(uint n_args, const mp_obj_t *args) {
         }
 
         if (s < top) {
-            mp_obj_list_append(res, mp_obj_new_str(s, top - s, false));
+            mp_obj_list_append(res, str_new(self_type, s, top - s));
         }
 
     } else {
@@ -467,7 +468,7 @@ STATIC mp_obj_t str_split(uint n_args, const mp_obj_t *args) {
                 }
                 s++;
             }
-            mp_obj_list_append(res, mp_obj_new_str(start, s - start, false));
+            mp_obj_list_append(res, str_new(self_type, start, s - start));
             if (s >= top) {
                 break;
             }
diff --git a/tests/basics/string_split.py b/tests/basics/string_split.py
index 398a11539..9ee9e5960 100644
--- a/tests/basics/string_split.py
+++ b/tests/basics/string_split.py
@@ -26,3 +26,5 @@ print("abcabc".split("bc"))
 print("abcabc".split("bc", 0))
 print("abcabc".split("bc", 1))
 print("abcabc".split("bc", 2))
+
+print(b"abcabc".split(b"bc", 2))
-- 
GitLab