summaryrefslogtreecommitdiff
path: root/sal
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2022-02-17 08:50:12 +0100
committerMike Kaganski <mike.kaganski@collabora.com>2022-02-17 21:19:25 +0100
commit01645b021c3609f86b8ebca100f54006f467573f (patch)
tree2dc0c6d9d2ea20b4a4be8d282ac5c34931694204 /sal
parent7d92ec5ae18fdec8a3182b1138a62b65e2d14c10 (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.cxx14
-rw-r--r--sal/rtl/strtmpl.hxx2
-rw-r--r--sal/rtl/ustring.cxx38
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;