diff --git a/Src/LexText/ParserCore/ParserWorker.cs b/Src/LexText/ParserCore/ParserWorker.cs index e2eb769b62..d75abd6f16 100644 --- a/Src/LexText/ParserCore/ParserWorker.cs +++ b/Src/LexText/ParserCore/ParserWorker.cs @@ -172,16 +172,21 @@ public bool UpdateWordform(IWfiWordform wordform, ParserPriority priority) if (sLower != form.Text) { - var lcResult = m_parser.ParseWord( - CustomIcu.GetIcuNormalizer(FwNormalizationMode.knmNFD) - .Normalize(sLower.Replace(' ', '.'))); - if (lcResult.Analyses.Count > 0 && lcResult.ErrorMessage == null) + var text = TsStringUtils.MakeString(sLower, form.get_WritingSystem(0)); + IWfiWordform lcWordform; + // We cannot use WfiWordformServices.FindOrCreateWordform because of props change (LT-21810). + // Only parse the lowercase version if it exists. + if (m_cache.ServiceLocator.GetInstance().TryGetObject(text, out lcWordform)) { - var text = TsStringUtils.MakeString(sLower, form.get_WritingSystem(0)); - var lcWordform = WfiWordformServices.FindOrCreateWordform(m_cache, text); - m_parseFiler.ProcessParse(lcWordform, priority, lcResult); - m_parseFiler.ProcessParse(wordform, priority, result); - return true; + var lcResult = m_parser.ParseWord( + CustomIcu.GetIcuNormalizer(FwNormalizationMode.knmNFD) + .Normalize(sLower.Replace(' ', '.'))); + if (lcResult.Analyses.Count > 0 && lcResult.ErrorMessage == null) + { + m_parseFiler.ProcessParse(lcWordform, priority, lcResult); + m_parseFiler.ProcessParse(wordform, priority, result); + return true; + } } }