@@ -237,7 +237,7 @@ void String::move(String &rhs) {
237
237
}
238
238
if (rhs.sso ()) {
239
239
setSSO (true );
240
- memcpy (sso_buf, rhs.sso_buf , sizeof (sso_buf));
240
+ memmove (sso_buf, rhs.sso_buf , sizeof (sso_buf));
241
241
} else {
242
242
setSSO (false );
243
243
setBuffer (rhs.wbuffer ());
@@ -730,21 +730,21 @@ void String::replace(const String& find, const String& replace) {
730
730
char *foundAt;
731
731
if (diff == 0 ) {
732
732
while ((foundAt = strstr (readFrom, find.buffer ())) != NULL ) {
733
- memcpy (foundAt, replace.buffer (), replace.len ());
733
+ memmove (foundAt, replace.buffer (), replace.len ());
734
734
readFrom = foundAt + replace.len ();
735
735
}
736
736
} else if (diff < 0 ) {
737
737
char *writeTo = wbuffer ();
738
738
while ((foundAt = strstr (readFrom, find.buffer ())) != NULL ) {
739
739
unsigned int n = foundAt - readFrom;
740
- memcpy (writeTo, readFrom, n);
740
+ memmove (writeTo, readFrom, n);
741
741
writeTo += n;
742
- memcpy (writeTo, replace.buffer (), replace.len ());
742
+ memmove (writeTo, replace.buffer (), replace.len ());
743
743
writeTo += replace.len ();
744
744
readFrom = foundAt + find.len ();
745
745
setLen (len () + diff);
746
746
}
747
- strcpy (writeTo, readFrom);
747
+ memmove (writeTo, readFrom, strlen (readFrom)+ 1 );
748
748
} else {
749
749
unsigned int size = len (); // compute size needed for result
750
750
while ((foundAt = strstr (readFrom, find.buffer ())) != NULL ) {
@@ -760,7 +760,7 @@ void String::replace(const String& find, const String& replace) {
760
760
readFrom = wbuffer () + index + find.len ();
761
761
memmove (readFrom + diff, readFrom, len () - (readFrom - buffer ()));
762
762
int newLen = len () + diff;
763
- memcpy (wbuffer () + index , replace.buffer (), replace.len ());
763
+ memmove (wbuffer () + index , replace.buffer (), replace.len ());
764
764
setLen (newLen);
765
765
wbuffer ()[newLen] = 0 ;
766
766
index --;
0 commit comments