63 lines
2.0 KiB
Diff
63 lines
2.0 KiB
Diff
diff --git a/icu/source/test/intltest/ssearch.cpp b/icu/source/test/intltest/ssearch.cpp
|
|
index a13df7f..615ea53 100644
|
|
--- a/icu/source/test/intltest/ssearch.cpp
|
|
+++ b/icu/source/test/intltest/ssearch.cpp
|
|
@@ -531,12 +531,26 @@ static char *printOffsets(char *buffer, size_t n, OrderList &list)
|
|
|
|
for(int32_t i = 0; i < size; i += 1) {
|
|
const Order *order = list.get(i);
|
|
+ size_t remaining = n - static_cast<size_t>(s - buffer);
|
|
+
|
|
+ if (remaining == 0) {
|
|
+ break;
|
|
+ }
|
|
|
|
if (i != 0) {
|
|
- s += snprintf(s, n, ", ");
|
|
+ int32_t written = snprintf(s, remaining, ", ");
|
|
+ if (written < 0 || static_cast<size_t>(written) >= remaining) {
|
|
+ break;
|
|
+ }
|
|
+ s += written;
|
|
+ remaining -= written;
|
|
}
|
|
|
|
- s += snprintf(s, n, "(%d, %d)", order->lowOffset, order->highOffset);
|
|
+ int32_t written = snprintf(s, remaining, "(%d, %d)", order->lowOffset, order->highOffset);
|
|
+ if (written < 0 || static_cast<size_t>(written) >= remaining) {
|
|
+ break;
|
|
+ }
|
|
+ s += written;
|
|
}
|
|
|
|
return buffer;
|
|
@@ -549,12 +563,26 @@ static char *printOrders(char *buffer, size_t n, OrderList &list)
|
|
|
|
for(int32_t i = 0; i < size; i += 1) {
|
|
const Order *order = list.get(i);
|
|
+ size_t remaining = n - static_cast<size_t>(s - buffer);
|
|
+
|
|
+ if (remaining == 0) {
|
|
+ break;
|
|
+ }
|
|
|
|
if (i != 0) {
|
|
- s += snprintf(s, n, ", ");
|
|
+ int32_t written = snprintf(s, remaining, ", ");
|
|
+ if (written < 0 || static_cast<size_t>(written) >= remaining) {
|
|
+ break;
|
|
+ }
|
|
+ s += written;
|
|
+ remaining -= written;
|
|
}
|
|
|
|
- s += snprintf(s, n, "%8.8X", order->order);
|
|
+ int32_t written = snprintf(s, remaining, "%8.8X", order->order);
|
|
+ if (written < 0 || static_cast<size_t>(written) >= remaining) {
|
|
+ break;
|
|
+ }
|
|
+ s += written;
|
|
}
|
|
|
|
return buffer;
|