diff options
author | Noel Grandin <noel@peralex.com> | 2020-12-03 14:58:29 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-12-03 20:28:39 +0100 |
commit | 004ad8805429930ca6aa122b3c38c496ce849e61 (patch) | |
tree | ecdece3d82c6d1ffc5506dfff4d4594235817add | |
parent | 520949f17a91c531ea0c8b3856ffcf3c7ac8a3b2 (diff) |
fix assert message inside liblangtag
lt-string.c: line 189: assertion `string != ((void *)0)' failed
Change-Id: I64d3374de57637fa61ac0148f7e82bd37c285a06
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107160
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r-- | i18nlangtag/source/languagetag/languagetag.cxx | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx index b9b6cc20a2d8..2f77ee148f71 100644 --- a/i18nlangtag/source/languagetag/languagetag.cxx +++ b/i18nlangtag/source/languagetag/languagetag.cxx @@ -1220,30 +1220,38 @@ bool LanguageTagImpl::canonicalize() if (!lt_tag_parse_disabled && lt_tag_parse(mpImplLangtag, OUStringToOString(maBcp47, RTL_TEXTENCODING_UTF8).getStr(), &aError.p)) { - char* pTag = lt_tag_canonicalize( mpImplLangtag, &aError.p); - SAL_WARN_IF( !pTag, "i18nlangtag", "LanguageTagImpl::canonicalize: could not canonicalize '" << maBcp47 << "'"); - if (pTag) + if (aError.p) + { + SAL_WARN("i18nlangtag", "LanguageTagImpl::canonicalize: could not parse '" << maBcp47 << "'"); + } + else { - OUString aNew( OUString::createFromAscii( pTag)); - // Make the lt_tag_t follow the new string if different, which - // removes default script and such. - if (maBcp47 != aNew) + char* pTag = lt_tag_canonicalize(mpImplLangtag, &aError.p); + SAL_WARN_IF(!pTag, "i18nlangtag", "LanguageTagImpl::canonicalize: could not canonicalize '" << maBcp47 << "'"); + if (pTag) { - maBcp47 = aNew; - bChanged = true; - meIsIsoLocale = DECISION_DONTKNOW; - meIsIsoODF = DECISION_DONTKNOW; - if (!lt_tag_parse( mpImplLangtag, pTag, &aError.p)) + OUString aNew(OUString::createFromAscii(pTag)); + // Make the lt_tag_t follow the new string if different, which + // removes default script and such. + if (maBcp47 != aNew) { - SAL_WARN( "i18nlangtag", "LanguageTagImpl::canonicalize: could not reparse '" << maBcp47 << "'"); - free( pTag); - meIsValid = DECISION_NO; - return bChanged; + maBcp47 = aNew; + bChanged = true; + meIsIsoLocale = DECISION_DONTKNOW; + meIsIsoODF = DECISION_DONTKNOW; + if (!lt_tag_parse(mpImplLangtag, pTag, &aError.p)) + { + SAL_WARN("i18nlangtag", "LanguageTagImpl::canonicalize: could not reparse '" + << maBcp47 << "'"); + free(pTag); + meIsValid = DECISION_NO; + return bChanged; + } } + free(pTag); + meIsValid = DECISION_YES; + return bChanged; } - free( pTag); - meIsValid = DECISION_YES; - return bChanged; } } else |