libroot: Do not include terminating NULL byte in result of [wc]strxfrm.
Fixes #18347.
This commit is contained in:
@@ -139,6 +139,13 @@ ICUCollateData::Strxfrm(char* out, const char* in,
|
|||||||
|
|
||||||
requiredSize = fCollator->getSortKey(unicodeIn, (uint8_t*)out, outSize);
|
requiredSize = fCollator->getSortKey(unicodeIn, (uint8_t*)out, outSize);
|
||||||
|
|
||||||
|
// Do not include terminating NULL byte in the required-size.
|
||||||
|
if (requiredSize > 0) {
|
||||||
|
if (outSize >= requiredSize)
|
||||||
|
assert(out[requiredSize - 1] == '\0');
|
||||||
|
requiredSize--;
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,6 +214,13 @@ ICUCollateData::Wcsxfrm(wchar_t* out, const wchar_t* in, size_t outSize,
|
|||||||
for (size_t i = 0; i < outSize; ++i)
|
for (size_t i = 0; i < outSize; ++i)
|
||||||
out[outSize - 1 - i] = buffer[outSize - 1 - i];
|
out[outSize - 1 - i] = buffer[outSize - 1 - i];
|
||||||
|
|
||||||
|
// Do not include terminating NULL character in the required-size.
|
||||||
|
if (requiredSize > 0) {
|
||||||
|
if (outSize >= requiredSize)
|
||||||
|
assert(out[requiredSize - 1] == 0);
|
||||||
|
requiredSize--;
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user