@@ -598,6 +598,7 @@ String::String(const char* s)
598
598
{
599
599
if (!s) return ;
600
600
size_t len = strlen (s);
601
+ if (!len) return ;
601
602
memcpy (allocate (len), s, len);
602
603
}
603
604
@@ -665,7 +666,7 @@ String& String::operator=(const char* s)
665
666
deallocate ();
666
667
if (!s) return *this ;
667
668
size_t len = strlen (s);
668
- memcpy (allocate (len), s, len);
669
+ if (len) memcpy (allocate (len), s, len);
669
670
return *this ;
670
671
}
671
672
@@ -959,8 +960,8 @@ String operator + (const String& lhs, const String& rhs)
959
960
{
960
961
String s;
961
962
s.allocate (lhs.len_ + rhs.len_ );
962
- memcpy (s.cstr_ , lhs.cstr_ , lhs.len_ );
963
- memcpy (s.cstr_ + lhs.len_ , rhs.cstr_ , rhs.len_ );
963
+ if (lhs. len_ ) memcpy (s.cstr_ , lhs.cstr_ , lhs.len_ );
964
+ if (rhs. len_ ) memcpy (s.cstr_ + lhs.len_ , rhs.cstr_ , rhs.len_ );
964
965
return s;
965
966
}
966
967
@@ -970,8 +971,8 @@ String operator + (const String& lhs, const char* rhs)
970
971
String s;
971
972
size_t rhslen = strlen (rhs);
972
973
s.allocate (lhs.len_ + rhslen);
973
- memcpy (s.cstr_ , lhs.cstr_ , lhs.len_ );
974
- memcpy (s.cstr_ + lhs.len_ , rhs, rhslen);
974
+ if (lhs. len_ ) memcpy (s.cstr_ , lhs.cstr_ , lhs.len_ );
975
+ if (rhslen) memcpy (s.cstr_ + lhs.len_ , rhs, rhslen);
975
976
return s;
976
977
}
977
978
@@ -981,8 +982,8 @@ String operator + (const char* lhs, const String& rhs)
981
982
String s;
982
983
size_t lhslen = strlen (lhs);
983
984
s.allocate (lhslen + rhs.len_ );
984
- memcpy (s.cstr_ , lhs, lhslen);
985
- memcpy (s.cstr_ + lhslen, rhs.cstr_ , rhs.len_ );
985
+ if (lhslen) memcpy (s.cstr_ , lhs, lhslen);
986
+ if (rhs. len_ ) memcpy (s.cstr_ + lhslen, rhs.cstr_ , rhs.len_ );
986
987
return s;
987
988
}
988
989
@@ -991,7 +992,7 @@ String operator + (const String& lhs, char rhs)
991
992
{
992
993
String s;
993
994
s.allocate (lhs.len_ + 1 );
994
- memcpy (s.cstr_ , lhs.cstr_ , lhs.len_ );
995
+ if (lhs. len_ ) memcpy (s.cstr_ , lhs.cstr_ , lhs.len_ );
995
996
s.cstr_ [lhs.len_ ] = rhs;
996
997
return s;
997
998
}
@@ -1002,7 +1003,7 @@ String operator + (char lhs, const String& rhs)
1002
1003
String s;
1003
1004
s.allocate (rhs.len_ + 1 );
1004
1005
s.cstr_ [0 ] = lhs;
1005
- memcpy (s.cstr_ + 1 , rhs.cstr_ , rhs.len_ );
1006
+ if (rhs. len_ ) memcpy (s.cstr_ + 1 , rhs.cstr_ , rhs.len_ );
1006
1007
return s;
1007
1008
}
1008
1009
0 commit comments