ICU-21143 Applying non-zero offset to null pointer is undefined behaviour.
The result of pointer end + 1 will not be used if end is nullptr so it doesn't really matter that the result of this operation is undefined, but it's therefore also unnecessary to perform the operation at all. Changing this removes this unnecessary operation and by doing so gives the undefined behaviour sanitizer one thing less to worry about.
This commit is contained in:
parent
56bb01ba84
commit
0735ea8c6f
@ -708,7 +708,7 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
|
|||||||
const char* end = begin;
|
const char* end = begin;
|
||||||
// We may have multiple variants, need to look at each of
|
// We may have multiple variants, need to look at each of
|
||||||
// them.
|
// them.
|
||||||
do {
|
for (;;) {
|
||||||
status = U_ZERO_ERROR;
|
status = U_ZERO_ERROR;
|
||||||
end = uprv_strchr(begin, '_');
|
end = uprv_strchr(begin, '_');
|
||||||
int32_t len = (end == nullptr) ? int32_t(uprv_strlen(begin)) : int32_t(end - begin);
|
int32_t len = (end == nullptr) ? int32_t(uprv_strlen(begin)) : int32_t(end - begin);
|
||||||
@ -739,8 +739,9 @@ Locale& Locale::init(const char* localeID, UBool canonicalize)
|
|||||||
uprv_strchr(fullName, '@'), status).data(), false);
|
uprv_strchr(fullName, '@'), status).data(), false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (end == nullptr) break;
|
||||||
begin = end + 1;
|
begin = end + 1;
|
||||||
} while (end != nullptr);
|
}
|
||||||
} // End of handle language _ variant
|
} // End of handle language _ variant
|
||||||
// Handle cases of key pattern "language _ Script _ REGION"
|
// Handle cases of key pattern "language _ Script _ REGION"
|
||||||
// ex: Map "ks_Arab_IN" to "ks_IN"
|
// ex: Map "ks_Arab_IN" to "ks_IN"
|
||||||
|
Loading…
Reference in New Issue
Block a user