@@ -185,7 +185,7 @@ unsigned char String::changeBuffer(unsigned int maxStrLen) {
185
185
size_t oldSize = capacity () + 1 ; // include NULL.
186
186
if (isSSO ()) {
187
187
// Copy the SSO buffer into allocated space
188
- memmove (newbuffer, sso.buff , sizeof (sso.buff ));
188
+ memmove_P (newbuffer, sso.buff , sizeof (sso.buff ));
189
189
}
190
190
if (newSize > oldSize)
191
191
{
@@ -210,7 +210,7 @@ String & String::copy(const char *cstr, unsigned int length) {
210
210
return *this ;
211
211
}
212
212
setLen (length);
213
- memmove (wbuffer (), cstr, length + 1 );
213
+ memmove_P (wbuffer (), cstr, length + 1 );
214
214
return *this ;
215
215
}
216
216
@@ -228,7 +228,7 @@ String & String::copy(const __FlashStringHelper *pstr, unsigned int length) {
228
228
void String::move (String &rhs) {
229
229
if (buffer ()) {
230
230
if (capacity () >= rhs.len ()) {
231
- memmove (wbuffer (), rhs.buffer (), rhs.length () + 1 );
231
+ memmove_P (wbuffer (), rhs.buffer (), rhs.length () + 1 );
232
232
setLen (rhs.len ());
233
233
rhs.invalidate ();
234
234
return ;
@@ -241,7 +241,7 @@ void String::move(String &rhs) {
241
241
}
242
242
if (rhs.isSSO ()) {
243
243
setSSO (true );
244
- memmove (sso.buff , rhs.sso .buff , sizeof (sso.buff ));
244
+ memmove_P (sso.buff , rhs.sso .buff , sizeof (sso.buff ));
245
245
} else {
246
246
setSSO (false );
247
247
setBuffer (rhs.wbuffer ());
@@ -313,7 +313,7 @@ unsigned char String::concat(const String &s) {
313
313
return 1 ;
314
314
if (!reserve (newlen))
315
315
return 0 ;
316
- memmove (wbuffer () + len (), buffer (), len ());
316
+ memmove_P (wbuffer () + len (), buffer (), len ());
317
317
setLen (newlen);
318
318
wbuffer ()[len ()] = 0 ;
319
319
return 1 ;
@@ -330,12 +330,7 @@ unsigned char String::concat(const char *cstr, unsigned int length) {
330
330
return 1 ;
331
331
if (!reserve (newlen))
332
332
return 0 ;
333
- if (cstr >= wbuffer () && cstr < wbuffer () + len ())
334
- // compatible with SSO in ram #6155 (case "x += x.c_str()")
335
- memmove (wbuffer () + len (), cstr, length + 1 );
336
- else
337
- // compatible with source in flash #6367
338
- memcpy_P (wbuffer () + len (), cstr, length + 1 );
333
+ memmove_P (wbuffer () + len (), cstr, length + 1 );
339
334
setLen (newlen);
340
335
return 1 ;
341
336
}
@@ -739,21 +734,21 @@ void String::replace(const String& find, const String& replace) {
739
734
char *foundAt;
740
735
if (diff == 0 ) {
741
736
while ((foundAt = strstr (readFrom, find.buffer ())) != NULL ) {
742
- memmove (foundAt, replace.buffer (), replace.len ());
737
+ memmove_P (foundAt, replace.buffer (), replace.len ());
743
738
readFrom = foundAt + replace.len ();
744
739
}
745
740
} else if (diff < 0 ) {
746
741
char *writeTo = wbuffer ();
747
742
while ((foundAt = strstr (readFrom, find.buffer ())) != NULL ) {
748
743
unsigned int n = foundAt - readFrom;
749
- memmove (writeTo, readFrom, n);
744
+ memmove_P (writeTo, readFrom, n);
750
745
writeTo += n;
751
- memmove (writeTo, replace.buffer (), replace.len ());
746
+ memmove_P (writeTo, replace.buffer (), replace.len ());
752
747
writeTo += replace.len ();
753
748
readFrom = foundAt + find.len ();
754
749
setLen (len () + diff);
755
750
}
756
- memmove (writeTo, readFrom, strlen (readFrom)+1 );
751
+ memmove_P (writeTo, readFrom, strlen (readFrom)+1 );
757
752
} else {
758
753
unsigned int size = len (); // compute size needed for result
759
754
while ((foundAt = strstr (readFrom, find.buffer ())) != NULL ) {
@@ -767,9 +762,9 @@ void String::replace(const String& find, const String& replace) {
767
762
int index = len () - 1 ;
768
763
while (index >= 0 && (index = lastIndexOf (find, index )) >= 0 ) {
769
764
readFrom = wbuffer () + index + find.len ();
770
- memmove (readFrom + diff, readFrom, len () - (readFrom - buffer ()));
765
+ memmove_P (readFrom + diff, readFrom, len () - (readFrom - buffer ()));
771
766
int newLen = len () + diff;
772
- memmove (wbuffer () + index , replace.buffer (), replace.len ());
767
+ memmove_P (wbuffer () + index , replace.buffer (), replace.len ());
773
768
setLen (newLen);
774
769
wbuffer ()[newLen] = 0 ;
775
770
index --;
@@ -797,7 +792,7 @@ void String::remove(unsigned int index, unsigned int count) {
797
792
char *writeTo = wbuffer () + index ;
798
793
unsigned int newlen = len () - count;
799
794
setLen (newlen);
800
- memmove (writeTo, wbuffer () + index + count, newlen - index );
795
+ memmove_P (writeTo, wbuffer () + index + count, newlen - index );
801
796
wbuffer ()[newlen] = 0 ;
802
797
}
803
798
@@ -829,7 +824,7 @@ void String::trim(void) {
829
824
unsigned int newlen = end + 1 - begin;
830
825
setLen (newlen);
831
826
if (begin > buffer ())
832
- memmove (wbuffer (), begin, newlen);
827
+ memmove_P (wbuffer (), begin, newlen);
833
828
wbuffer ()[newlen] = 0 ;
834
829
}
835
830
0 commit comments