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:
Fredrik Roubert 2020-06-02 22:35:20 +02:00 committed by Fredrik Roubert
parent 56bb01ba84
commit 0735ea8c6f

View File

@ -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"