@@ -237,7 +237,7 @@ void String::move(String &rhs) {
237237 }
238238 if (rhs.sso ()) {
239239 setSSO (true );
240- memcpy (sso_buf, rhs.sso_buf , sizeof (sso_buf));
240+ memmove (sso_buf, rhs.sso_buf , sizeof (sso_buf));
241241 } else {
242242 setSSO (false );
243243 setBuffer (rhs.wbuffer ());
@@ -730,21 +730,21 @@ void String::replace(const String& find, const String& replace) {
730730 char *foundAt;
731731 if (diff == 0 ) {
732732 while ((foundAt = strstr (readFrom, find.buffer ())) != NULL ) {
733- memcpy (foundAt, replace.buffer (), replace.len ());
733+ memmove (foundAt, replace.buffer (), replace.len ());
734734 readFrom = foundAt + replace.len ();
735735 }
736736 } else if (diff < 0 ) {
737737 char *writeTo = wbuffer ();
738738 while ((foundAt = strstr (readFrom, find.buffer ())) != NULL ) {
739739 unsigned int n = foundAt - readFrom;
740- memcpy (writeTo, readFrom, n);
740+ memmove (writeTo, readFrom, n);
741741 writeTo += n;
742- memcpy (writeTo, replace.buffer (), replace.len ());
742+ memmove (writeTo, replace.buffer (), replace.len ());
743743 writeTo += replace.len ();
744744 readFrom = foundAt + find.len ();
745745 setLen (len () + diff);
746746 }
747- strcpy (writeTo, readFrom);
747+ memmove (writeTo, readFrom, strlen (readFrom)+ 1 );
748748 } else {
749749 unsigned int size = len (); // compute size needed for result
750750 while ((foundAt = strstr (readFrom, find.buffer ())) != NULL ) {
@@ -760,7 +760,7 @@ void String::replace(const String& find, const String& replace) {
760760 readFrom = wbuffer () + index + find.len ();
761761 memmove (readFrom + diff, readFrom, len () - (readFrom - buffer ()));
762762 int newLen = len () + diff;
763- memcpy (wbuffer () + index, replace.buffer (), replace.len ());
763+ memmove (wbuffer () + index, replace.buffer (), replace.len ());
764764 setLen (newLen);
765765 wbuffer ()[newLen] = 0 ;
766766 index--;
0 commit comments