diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2022-02-17 08:50:12 +0100 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2022-02-17 21:19:25 +0100 |
commit | 01645b021c3609f86b8ebca100f54006f467573f (patch) | |
tree | 2dc0c6d9d2ea20b4a4be8d282ac5c34931694204 /sal | |
parent | 7d92ec5ae18fdec8a3182b1138a62b65e2d14c10 (diff) |
Deduplicate some code
Change-Id: Ib05624739cce31b08fc409f238d447ed8d99bad9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130016
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sal')
-rw-r--r-- | sal/rtl/string.cxx | 14 | ||||
-rw-r--r-- | sal/rtl/strtmpl.hxx | 2 | ||||
-rw-r--r-- | sal/rtl/ustring.cxx | 38 |
3 files changed, 4 insertions, 50 deletions
diff --git a/sal/rtl/string.cxx b/sal/rtl/string.cxx index a2020561a7c7..3c8c01e98b52 100644 --- a/sal/rtl/string.cxx +++ b/sal/rtl/string.cxx @@ -339,19 +339,7 @@ void rtl_string_newReplaceFirst( if (str->length - fromLength > SAL_MAX_INT32 - toLength) { std::abort(); } - sal_Int32 n = str->length - fromLength + toLength; - rtl_string_acquire(str); // in case *newStr == str - rtl_string_new_WithLength(newStr, n); - if (n != 0) { - (*newStr)->length = n; - assert(i >= 0 && i < str->length); - memcpy((*newStr)->buffer, str->buffer, i); - memcpy((*newStr)->buffer + i, to, toLength); - memcpy( - (*newStr)->buffer + i + toLength, str->buffer + i + fromLength, - str->length - i - fromLength); - } - rtl_string_release(str); + rtl::str::newReplaceStrAt(newStr, str, i, fromLength, to, toLength); } *index = i; } diff --git a/sal/rtl/strtmpl.hxx b/sal/rtl/strtmpl.hxx index 4f04cc404ee5..51dd4d0e191b 100644 --- a/sal/rtl/strtmpl.hxx +++ b/sal/rtl/strtmpl.hxx @@ -1481,7 +1481,7 @@ void newReplaceStrAt ( IMPL_RTL_STRINGDATA** ppTh assert(nIndex >= 0 && nIndex <= pStr->length); assert(nCount >= 0); assert(nCount <= pStr->length - nIndex); - assert(pNewSubStr); + assert(pNewSubStr != nullptr || nNewSubStrLen == 0); assert(nNewSubStrLen >= 0); /* Append? */ if ( nIndex >= pStr->length ) diff --git a/sal/rtl/ustring.cxx b/sal/rtl/ustring.cxx index 70048db58f6e..5a4f16b88fcb 100644 --- a/sal/rtl/ustring.cxx +++ b/sal/rtl/ustring.cxx @@ -1213,24 +1213,7 @@ void rtl_uString_newReplaceFirstAsciiLUtf16L( rtl_uString_release(*newStr); *newStr = nullptr; } else { - sal_Int32 n = str->length - fromLength + toLength; - rtl_uString_acquire(str); // in case *newStr == str - rtl_uString_new_WithLength(newStr, n); - if (n != 0 && /*TODO:*/ *newStr != nullptr) { - (*newStr)->length = n; - assert(i >= 0 && i < str->length); - memcpy( - (*newStr)->buffer, str->buffer, i * sizeof (sal_Unicode)); - if (toLength != 0) { - memcpy( - (*newStr)->buffer + i, to, toLength * sizeof (sal_Unicode)); - } - memcpy( - (*newStr)->buffer + i + toLength, - str->buffer + i + fromLength, - (str->length - i - fromLength) * sizeof (sal_Unicode)); - } - rtl_uString_release(str); + rtl::str::newReplaceStrAt(newStr, str, i, fromLength, to, toLength); } } *index = i; @@ -1306,24 +1289,7 @@ void rtl_uString_newReplaceFirstUtf16LUtf16L( rtl_uString_release(*newStr); *newStr = nullptr; } else { - sal_Int32 n = str->length - fromLength + toLength; - rtl_uString_acquire(str); // in case *newStr == str - rtl_uString_new_WithLength(newStr, n); - if (n != 0 && /*TODO:*/ *newStr != nullptr) { - (*newStr)->length = n; - assert(i >= 0 && i < str->length); - memcpy( - (*newStr)->buffer, str->buffer, i * sizeof (sal_Unicode)); - if (toLength != 0) { - memcpy( - (*newStr)->buffer + i, to, toLength * sizeof (sal_Unicode)); - } - memcpy( - (*newStr)->buffer + i + toLength, - str->buffer + i + fromLength, - (str->length - i - fromLength) * sizeof (sal_Unicode)); - } - rtl_uString_release(str); + rtl::str::newReplaceStrAt(newStr, str, i, fromLength, to, toLength); } } *index = i; |