Skip to content

Commit c79f722

Browse files
Don't mess with the original in String::substring
Before, substring would (temporarily) add a \0 in the original string at the end of the substring, so the substring could be copied into a new String object. However, now that the String::copy() method can work with non-nul-terminated strings (by passing an explicit length), this trick is not needed and we can just call the copy method instead.
1 parent 8289b2d commit c79f722

File tree

1 file changed

+1
-4
lines changed

1 file changed

+1
-4
lines changed

Diff for: hardware/arduino/avr/cores/arduino/WString.cpp

+1-4
Original file line numberDiff line numberDiff line change
@@ -624,10 +624,7 @@ String String::substring(unsigned int left, unsigned int right) const
624624
String out;
625625
if (left > len) return out;
626626
if (right > len) right = len;
627-
char temp = buffer[right]; // save the replaced character
628-
buffer[right] = '\0';
629-
out = buffer + left; // pointer arithmetic
630-
buffer[right] = temp; //restore character
627+
out.copy(buffer + left, right - left);
631628
return out;
632629
}
633630

0 commit comments

Comments
 (0)