summaryrefslogtreecommitdiff
path: root/sal/rtl
diff options
context:
space:
mode:
Diffstat (limited to 'sal/rtl')
-rw-r--r--sal/rtl/strtmpl.cxx10
-rw-r--r--sal/rtl/ustring.cxx27
2 files changed, 24 insertions, 13 deletions
diff --git a/sal/rtl/strtmpl.cxx b/sal/rtl/strtmpl.cxx
index 8ff170767b18..082dcd7d3913 100644
--- a/sal/rtl/strtmpl.cxx
+++ b/sal/rtl/strtmpl.cxx
@@ -145,9 +145,13 @@ sal_Int32 SAL_CALL IMPL_RTL_STRNAME( compare_WithLength )( const IMPL_RTL_STRCOD
sal_Int32 nRet = nStr1Len - nStr2Len;
int nCount = (nRet <= 0) ? nStr1Len : nStr2Len;
- --pStr1;
- --pStr2;
- while( (--nCount >= 0) && (*++pStr1 == *++pStr2) ) ;
+ while( --nCount >= 0 ) {
+ if (*pStr1 != *pStr2) {
+ break;
+ }
+ ++pStr1;
+ ++pStr2;
+ }
if( nCount >= 0 )
nRet = static_cast<sal_Int32>(IMPL_RTL_USTRCODE( *pStr1 ))
diff --git a/sal/rtl/ustring.cxx b/sal/rtl/ustring.cxx
index 7b6687f74bd5..f84e3e1bd2d4 100644
--- a/sal/rtl/ustring.cxx
+++ b/sal/rtl/ustring.cxx
@@ -636,7 +636,7 @@ void rtl_uString_newConcatUtf16L(
{
assert(newString != nullptr);
assert(left != nullptr);
- assert(right != nullptr);
+ assert(right != nullptr || rightLength == 0);
assert(rightLength >= 0);
if (left->length > std::numeric_limits<sal_Int32>::max() - rightLength) {
#if !defined(__COVERITY__)
@@ -650,9 +650,11 @@ void rtl_uString_newConcatUtf16L(
sal_Int32 n = left->length + rightLength;
rtl_uString_assign(newString, left);
rtl_uString_ensureCapacity(newString, n);
- memcpy(
- (*newString)->buffer + (*newString)->length, right,
- rightLength * sizeof (sal_Unicode));
+ if (rightLength != 0) {
+ memcpy(
+ (*newString)->buffer + (*newString)->length, right,
+ rightLength * sizeof (sal_Unicode));
+ }
(*newString)->buffer[n] = 0;
(*newString)->length = n;
}
@@ -1316,7 +1318,7 @@ void rtl_uString_newReplaceFirstAsciiLUtf16L(
assert(index != nullptr);
assert(*index >= 0 && *index <= str->length);
assert(fromLength >= 0);
- assert(to != nullptr);
+ assert(to != nullptr || toLength == 0);
assert(toLength >= 0);
sal_Int32 i = rtl_ustr_indexOfAscii_WithLength(
str->buffer + *index, str->length - *index, from, fromLength);
@@ -1338,8 +1340,10 @@ void rtl_uString_newReplaceFirstAsciiLUtf16L(
assert(i >= 0 && i < str->length);
memcpy(
(*newStr)->buffer, str->buffer, i * sizeof (sal_Unicode));
- memcpy(
- (*newStr)->buffer + i, to, toLength * sizeof (sal_Unicode));
+ if (toLength != 0) {
+ memcpy(
+ (*newStr)->buffer + i, to, toLength * sizeof (sal_Unicode));
+ }
memcpy(
(*newStr)->buffer + i + toLength,
str->buffer + i + fromLength,
@@ -1405,8 +1409,9 @@ void rtl_uString_newReplaceFirstUtf16LUtf16L(
assert(str != nullptr);
assert(index != nullptr);
assert(*index >= 0 && *index <= str->length);
+ assert(from != nullptr || fromLength == 0);
assert(fromLength >= 0);
- assert(to != nullptr);
+ assert(to != nullptr || toLength == 0);
assert(toLength >= 0);
sal_Int32 i = rtl_ustr_indexOfStr_WithLength(
str->buffer + *index, str->length - *index, from, fromLength);
@@ -1428,8 +1433,10 @@ void rtl_uString_newReplaceFirstUtf16LUtf16L(
assert(i >= 0 && i < str->length);
memcpy(
(*newStr)->buffer, str->buffer, i * sizeof (sal_Unicode));
- memcpy(
- (*newStr)->buffer + i, to, toLength * sizeof (sal_Unicode));
+ if (toLength != 0) {
+ memcpy(
+ (*newStr)->buffer + i, to, toLength * sizeof (sal_Unicode));
+ }
memcpy(
(*newStr)->buffer + i + toLength,
str->buffer + i + fromLength,