Resolves: tdf#153958 Hyphenation crashes with -Alte...
nPos2 is 0 due to the -, so aLeft is empty, nPos is set to 0
then incremented to 1, aLeft.replaceFirst is run after its end pos
so crashes/asserts. Presumably we can do nothing meaningful here
so skip if nPos2 is 0
Change-Id: I09754c4b2567fe5c1b4c36de0b36ee99f575244d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150327
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
(cherry picked from commit 7584e403d57097ed4cc2d827d68895ec35cf805f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150331
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
diff --git a/cui/source/dialogs/hyphen.cxx b/cui/source/dialogs/hyphen.cxx
index cc6666d..259ec5d 100644
--- a/cui/source/dialogs/hyphen.cxx
+++ b/cui/source/dialogs/hyphen.cxx
@@ -161,7 +161,7 @@ OUString SvxHyphenWordDialog::EraseUnusableHyphens_Impl()
// 2) remove all hyphenation positions from the start that are not considered by the core
const std::u16string_view aSearchRange( aTxt.subView( 0, nPos1 ) );
size_t nPos2 = aSearchRange.rfind( '-' ); // the '-' position the core will use by default
if (nPos2 != std::u16string_view::npos )
if (nPos2 != std::u16string_view::npos && nPos2 != 0)
{
OUString aLeft( aSearchRange.substr( 0, nPos2 ) );
nPos = 0;