sc/source/core/tool/interpr1.cxx | 8 ++++-- sc/source/core/tool/scmatrix.cxx | 8 ++++++ sc/source/filter/oox/sheetdatabuffer.cxx | 19 ++++++++------- sc/source/filter/xml/xmlcelli.cxx | 7 ++++- sc/source/ui/app/inputhdl.cxx | 2 - solenv/gdb/libreoffice/sal.py | 4 +-- solenv/gdb/libreoffice/util/string.py | 6 ++-- svl/source/numbers/zforscan.cxx | 38 +++++++++++++------------------ sw/source/filter/ww8/ww8par.hxx | 7 ++--- sw/source/filter/ww8/ww8par2.cxx | 24 +++++++++++-------- vcl/source/opengl/OpenGLContext.cxx | 1 11 files changed, 71 insertions(+), 53 deletions(-)
New commits: commit 31426d61ef42df7f58610490656e4b36bad91778 Author: Michael Meeks <[email protected]> Date: Wed Oct 18 15:24:44 2017 +0100 tdf#113225 - reset framebuffer count when resetting OpenGLContext Otherwise we can fail to allocate a new one when we need it post reset. http://crashreport.libreoffice.org/stats/crash_details/e4f26191-15d5-441a-868f-9ada21ef4424 Change-Id: Icc5ec6c51338e18a0a1bc890f56670e8fe9c73ea Reviewed-on: https://gerrit.libreoffice.org/43508 Tested-by: Jenkins <[email protected]> Reviewed-by: Michael Meeks <[email protected]> (cherry picked from commit 856d734ee1665b6aa7304847c3a923af09066016) Reviewed-on: https://gerrit.libreoffice.org/43551 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> (cherry picked from commit 5396ddfb01539424c3aef02bbdea3c5c3152a4ce) diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx index fc12d88617ff..57216f9827a2 100644 --- a/vcl/source/opengl/OpenGLContext.cxx +++ b/vcl/source/opengl/OpenGLContext.cxx @@ -422,6 +422,7 @@ void OpenGLContext::reset() delete pFramebuffer; pFramebuffer = pPrevFramebuffer; } + mnFramebufferCount = 0; mpFirstFramebuffer = nullptr; mpLastFramebuffer = nullptr; } commit 857821d6e44390d96b91ac9c72cbea2ca11f5cda Author: Eike Rathke <[email protected]> Date: Mon Oct 16 22:08:27 2017 +0200 Resolves: tdf#112933 correct number of one decimal in fraction of seconds Regression from commit 0ac1e2ad19d4fdb46dcf54f67db2df081f4675bb Date: Wed Aug 2 09:39:43 2017 +0100 Resolves: ofz#2833 null deref and similar for date+time commit 42b894f80a6d0c39bb0f7092eb204a15c22c4f38 Date: Sat Aug 5 19:15:36 2017 +0100 ofz#2867 null deref Effectively revert the code changes of those, leaving the test case files intact, and "do the right thing" (switching two lines, to nPos = nPos + sStrArray[i].getLength(); i++; nPos actually had always to be incremented by the length of the *current* string position but was used after only as an error position indicator, meaningless if there was no error. (cherry picked from commit 4f72d2ec6c210232e0abd4965e215611e807c125) Conflicts: svl/source/numbers/zforscan.cxx Backported. Change-Id: I9bc4e5e56d70a275d26df0b72ed6a19e9297e0fa Reviewed-on: https://gerrit.libreoffice.org/43441 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> (cherry picked from commit 18d0268acce2fdd10a1186e1466768887f64623e) diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx index 4098fc9e85b3..73e2c1d62f98 100644 --- a/svl/source/numbers/zforscan.cxx +++ b/svl/source/numbers/zforscan.cxx @@ -2349,21 +2349,18 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString ) bDecSep = true; nTypeArray[i] = NF_SYMBOLTYPE_DIGIT; OUString& rStr = sStrArray[i]; + nPos = nPos + sStrArray[i].getLength(); + nCounter++; i++; - if (i < nAnzStrings) + while (i < nAnzStrings && + sStrArray[i][0] == '0') { + rStr += sStrArray[i]; nPos = nPos + sStrArray[i].getLength(); + nTypeArray[i] = NF_SYMBOLTYPE_EMPTY; + nAnzResStrings--; nCounter++; - while (i < nAnzStrings && - sStrArray[i][0] == '0') - { - rStr += sStrArray[i]; - nPos = nPos + sStrArray[i].getLength(); - nTypeArray[i] = NF_SYMBOLTYPE_EMPTY; - nAnzResStrings--; - nCounter++; - i++; - } + i++; } } else @@ -2502,21 +2499,18 @@ sal_Int32 ImpSvNumberformatScan::FinalScan( OUString& rString ) bDecSep = true; nTypeArray[i] = NF_SYMBOLTYPE_DIGIT; OUString& rStr = sStrArray[i]; + nPos = nPos + sStrArray[i].getLength(); i++; - if (i < nAnzStrings) + nCounter++; + while (i < nAnzStrings && + sStrArray[i][0] == '0') { + rStr += sStrArray[i]; nPos = nPos + sStrArray[i].getLength(); + nTypeArray[i] = NF_SYMBOLTYPE_EMPTY; + nAnzResStrings--; nCounter++; - while (i < nAnzStrings && - sStrArray[i][0] == '0') - { - rStr += sStrArray[i]; - nPos = nPos + sStrArray[i].getLength(); - nTypeArray[i] = NF_SYMBOLTYPE_EMPTY; - nAnzResStrings--; - nCounter++; - i++; - } + i++; } } else commit 33142ead138e73bf65964e4b474079b0a77b0603 Author: Michael Stahl <[email protected]> Date: Fri Sep 29 16:53:35 2017 +0200 gdb pretty-printers: fix StringPrinterHelper for gdb 8.0 Latest gdb release "lazy_string" validates the array size: Traceback (most recent call last): File "/work/lo/master/solenv/gdb/libreoffice/util/string.py", line 29, in to_string return self.make_string(data, self.encoding, len) File "/work/lo/master/solenv/gdb/libreoffice/util/string.py", line 66, in make_string return data.lazy_string(encoding, length) gdb.error: Length is larger than array size. rtl_uString has "sal_Unicode buffer[1];", which is a lie as the real size is the same as "length". Taking the address of "buffer" appears to avoid the exception. Change-Id: I85710b1adfae584ba09c8d517e9b49b290e79d8a (cherry picked from commit 205677c88cb01e2bbee278443867baed2c89e5fe) Reviewed-on: https://gerrit.libreoffice.org/42942 Tested-by: Jenkins <[email protected]> Reviewed-by: Christian Lohmaier <[email protected]> (cherry picked from commit 6e97479c443fceaf37feb8a4c76f290dc43de670) diff --git a/solenv/gdb/libreoffice/sal.py b/solenv/gdb/libreoffice/sal.py index c2e8384537be..8dcfaebe66e1 100644 --- a/solenv/gdb/libreoffice/sal.py +++ b/solenv/gdb/libreoffice/sal.py @@ -21,7 +21,7 @@ class RtlStringPrinter(StringPrinterHelper): super(RtlStringPrinter, self).__init__(typename, val, encoding) def data(self): - return self.val['buffer'] + return self.val['buffer'].address def length(self): return self.val['length'] @@ -37,7 +37,7 @@ class StringPrinter(StringPrinterHelper): def data(self): assert self.val['pData'] - return self.val['pData'].dereference()['buffer'] + return self.val['pData'].dereference()['buffer'].address def length(self): assert self.val['pData'] diff --git a/solenv/gdb/libreoffice/util/string.py b/solenv/gdb/libreoffice/util/string.py index 32583718f83b..742aabbaca27 100644 --- a/solenv/gdb/libreoffice/util/string.py +++ b/solenv/gdb/libreoffice/util/string.py @@ -52,15 +52,15 @@ class StringPrinterHelper(object): if not encoding: encoding = '' - if use_lazy_string: - return data.lazy_string(encoding, length) - # we need to determine length, if not given (for sal_Unicode*) if length < 0: length = 0 while data[length] != 0 and length <= 512: # arbitrary limit length += 1 + if use_lazy_string: + return data.lazy_string(encoding, length) + # The gdb.Value.string() conversion works on array of bytes, but # the length we have is the length of the string. So we must # multiply it by width of character if the string is Unicode. commit a8cfb28a30de33e7850d23c7dea59a08038cbfc9 Author: Eike Rathke <[email protected]> Date: Mon Oct 2 16:13:34 2017 +0200 Resolves: tdf#112780 no ResetDirty() after SetHybridEmptyDisplayedAsString() Change-Id: Idea5c1bd8e8577eaf90fc47d39f88c79963c422b (cherry picked from commit df778416981ab02d42182e5c2e46dc09ba2e2a3c) Reviewed-on: https://gerrit.libreoffice.org/43048 Reviewed-by: Markus Mohrhard <[email protected]> Tested-by: Eike Rathke <[email protected]> (cherry picked from commit 8d9b236dcb3fd0f7028e4d19ede04589cf85d760) diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx index 3f894d112a3b..9724b46bf6cc 100644 --- a/sc/source/filter/xml/xmlcelli.cxx +++ b/sc/source/filter/xml/xmlcelli.cxx @@ -1012,8 +1012,13 @@ void ScXMLTableRowCellContext::SetFormulaCell(ScFormulaCell* pFCell) const { pFCell->SetHybridDouble(fValue); if (mbPossibleEmptyDisplay && fValue == 0.0) + { + // Needs to be recalculated to propagate, otherwise would be + // propagated as empty string. So don't ResetDirty(). pFCell->SetHybridEmptyDisplayedAsString(); - pFCell->ResetDirty(); + } + else + pFCell->ResetDirty(); } } } commit 98e811528fa2ed87e0b1e2d8bf1fd66ac222702d Author: Caolán McNamara <[email protected]> Date: Mon Oct 2 09:24:19 2017 +0100 ofz#3527 ofz#3532 Invalid read of size 8 use numrule name to look up numrule instead of cached numrule pointer in case it was deleted on failure to apply the numrule over an invalid range Invalid read of size 8 at 0x1E875132: rtl::OUString::OUString(rtl::OUString const&) (ustring.hxx:143) by 0x1EB33D93: SwWW8ImplReader::StartAnl(unsigned char const*) (ww8par2.cxx:1094) by 0x1EB33003: SwWW8ImplReader::Read_ANLevelNo(unsigned short, unsigned char const*, short) (ww8par2.cxx:910) by 0x1EBA375D: SwWW8ImplReader::ImportSprm(unsigned char const*, int, unsigned short) (ww8par6.cxx:6337) by 0x1EAEEA24: SwWW8ImplReader::ReadTextAttr(int&, long, bool&) (ww8par.cxx:3810) by 0x1EAEF15A: SwWW8ImplReader::ReadAttrs(int&, int&, long, bool&) (ww8par.cxx:3921) by 0x1EAEF6E0: SwWW8ImplReader::ReadText(int, int, ManTypes) (ww8par.cxx:4003) by 0x1EAF6DCE: SwWW8ImplReader::CoreLoad(WW8Glossary const*) (ww8par.cxx:5219) Address 0x31831158 is 200 bytes inside a block of size 248 free'd at 0x4C2F21A: operator delete(void*) (vg_replace_malloc.c:576) by 0x253BC1B5: SwDoc::DelNumRule(rtl::OUString const&, bool) (docnum.cxx:1033) by 0x25CB943D: SwFltControlStack::SetAttrInDoc(SwPosition const&, SwFltStackEntry&) (fltshell.cxx:609) by 0x1EAE5011: SwWW8FltControlStack::SetAttrInDoc(SwPosition const&, SwFltStackEntry&) (ww8par.cxx:1445) by 0x25CB8A9E: SwFltControlStack::SetAttr(SwPosition const&, unsigned short, bool, long, bool) (fltshell.cxx:457) by 0x1EAE420E: SwWW8FltControlStack::SetAttr(SwPosition const&, unsigned short, bool, long, bool) (ww8par.cxx:1185) by 0x1EAE5C12: SwWW8ImplReader::Read_Tab(unsigned short, unsigned char const*, short) (ww8par.cxx:1625) by 0x1EBA35F0: SwWW8ImplReader::EndSprm(unsigned short) (ww8par6.cxx:6321) by 0x1EAEEA44: SwWW8ImplReader::ReadTextAttr(int&, long, bool&) (ww8par.cxx:3813) by 0x1EAEF15A: SwWW8ImplReader::ReadAttrs(int&, int&, long, bool&) (ww8par.cxx:3921) by 0x1EAEF6E0: SwWW8ImplReader::ReadText(int, int, ManTypes) (ww8par.cxx:4003) by 0x1EAF6DCE: SwWW8ImplReader::CoreLoad(WW8Glossary const*) (ww8par.cxx:5219) Change-Id: Ia7ab67e42fc7a162d8089722e77841285f72a671 Reviewed-on: https://gerrit.libreoffice.org/43030 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Michael Stahl <[email protected]> (cherry picked from commit 8580472270972733cda7fa6ecf23db73359d30bb) diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx index 3de77f914409..3d72215dc157 100644 --- a/sw/source/filter/ww8/ww8par.hxx +++ b/sw/source/filter/ww8/ww8par.hxx @@ -972,11 +972,10 @@ struct ApoTestResults struct ANLDRuleMap { - SwNumRule* mpOutlineNumRule; // WinWord 6 numbering, variant 1 - SwNumRule* mpNumberingNumRule; // WinWord 6 numbering, variant 2 - SwNumRule* GetNumRule(sal_uInt8 nNumType); + OUString msOutlineNumRule; // WinWord 6 numbering, variant 1 + OUString msNumberingNumRule; // WinWord 6 numbering, variant 2 + SwNumRule* GetNumRule(SwDoc& rDoc, sal_uInt8 nNumType); void SetNumRule(SwNumRule*, sal_uInt8 nNumType); - ANLDRuleMap() : mpOutlineNumRule(nullptr), mpNumberingNumRule(nullptr) {} }; struct SprmReadInfo; diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index 7a3f269bb1ab..659ce0b4c0cd 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -1020,17 +1020,21 @@ WW8LvlType GetNumType(sal_uInt8 nWwLevelNo) return nRet; } -SwNumRule *ANLDRuleMap::GetNumRule(sal_uInt8 nNumType) +SwNumRule *ANLDRuleMap::GetNumRule(SwDoc& rDoc, sal_uInt8 nNumType) { - return (WW8_Numbering == nNumType ? mpNumberingNumRule : mpOutlineNumRule); + const OUString& rNumRule = WW8_Numbering == nNumType ? msNumberingNumRule : msOutlineNumRule; + if (rNumRule.isEmpty()) + return nullptr; + return rDoc.FindNumRulePtr(rNumRule); } void ANLDRuleMap::SetNumRule(SwNumRule *pRule, sal_uInt8 nNumType) { + OUString sNumRule = pRule ? pRule->GetName() : OUString(); if (WW8_Numbering == nNumType) - mpNumberingNumRule = pRule; + msNumberingNumRule = sNumRule; else - mpOutlineNumRule = pRule; + msOutlineNumRule = sNumRule; } // StartAnl is called at the beginning of a row area that contains @@ -1044,7 +1048,7 @@ void SwWW8ImplReader::StartAnl(const sal_uInt8* pSprm13) return; m_nWwNumType = nT; - SwNumRule *pNumRule = m_aANLDRules.GetNumRule(m_nWwNumType); + SwNumRule *pNumRule = m_aANLDRules.GetNumRule(m_rDoc, m_nWwNumType); // check for COL numbering: const sal_uInt8* pS12 = nullptr;// sprmAnld @@ -1112,7 +1116,7 @@ void SwWW8ImplReader::NextAnlLine(const sal_uInt8* pSprm13) if (!m_bAnl) return; - SwNumRule *pNumRule = m_aANLDRules.GetNumRule(m_nWwNumType); + SwNumRule *pNumRule = m_aANLDRules.GetNumRule(m_rDoc, m_nWwNumType); // pNd->UpdateNum ohne Regelwerk gibt GPF spaetestens beim Speichern als // sdw3 @@ -1121,7 +1125,7 @@ void SwWW8ImplReader::NextAnlLine(const sal_uInt8* pSprm13) if (*pSprm13 == 10 || *pSprm13 == 11) { m_nSwNumLevel = 0; - if (!pNumRule->GetNumFormat(m_nSwNumLevel)) + if (pNumRule && !pNumRule->GetNumFormat(m_nSwNumLevel)) { // not defined yet // sprmAnld o. 0 @@ -1133,7 +1137,7 @@ void SwWW8ImplReader::NextAnlLine(const sal_uInt8* pSprm13) { m_nSwNumLevel = *pSprm13 - 1; // outline // undefined - if (!pNumRule->GetNumFormat(m_nSwNumLevel)) + if (pNumRule && !pNumRule->GetNumFormat(m_nSwNumLevel)) { if (m_pNumOlst) // there was a OLST { @@ -1186,7 +1190,7 @@ void SwWW8ImplReader::StopAnlToRestart(sal_uInt8 nNewType, bool bGoBack) else m_pCtrlStck->SetAttr(*m_pPaM->GetPoint(), RES_FLTR_NUMRULE); - m_aANLDRules.mpNumberingNumRule = nullptr; + m_aANLDRules.msNumberingNumRule.clear(); /* #i18816# my take on this problem is that moving either way from an outline to a @@ -1196,7 +1200,7 @@ void SwWW8ImplReader::StopAnlToRestart(sal_uInt8 nNewType, bool bGoBack) (((m_nWwNumType == WW8_Outline) && (nNewType == WW8_Numbering)) || ((m_nWwNumType == WW8_Numbering) && (nNewType == WW8_Outline))); if (!bNumberingNotStopOutline) - m_aANLDRules.mpOutlineNumRule = nullptr; + m_aANLDRules.msOutlineNumRule.clear(); m_nSwNumLevel = 0xff; m_nWwNumType = WW8_None; commit 73c3f33f995d108bd10e7009655edae2d77c1534 Author: Eike Rathke <[email protected]> Date: Sat Sep 30 20:31:34 2017 +0200 Resolves: tdf#100822 use sax::Converter::parseDateTime() for 'd' ISO 8601 date Instead of squeezing the string through the locale dependent number parser (which should force '.' Time100SecSeparator for 'T' ISO 8601 but apparently doesn't yet) that is a bottle neck anyway. Change-Id: I70f74e680322a715c9cc658c8be033620d9798e3 (cherry picked from commit 5374c04a89e1720490a3625dfd95406c2d60c0cd) Reviewed-on: https://gerrit.libreoffice.org/42971 Tested-by: Jenkins <[email protected]> Reviewed-by: Markus Mohrhard <[email protected]> (cherry picked from commit d4dad2989071eb5a21d608aa5c3782a68fddf571) diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx b/sc/source/filter/oox/sheetdatabuffer.cxx index dbcc07d5db64..350f271c1be0 100644 --- a/sc/source/filter/oox/sheetdatabuffer.cxx +++ b/sc/source/filter/oox/sheetdatabuffer.cxx @@ -54,6 +54,7 @@ #include "documentimport.hxx" #include "formulabuffer.hxx" #include <numformat.hxx> +#include <sax/tools/converter.hxx> namespace oox { namespace xls { @@ -215,15 +216,17 @@ void SheetDataBuffer::setErrorCell( const CellModel& rModel, sal_uInt8 nErrorCod void SheetDataBuffer::setDateCell( const CellModel& rModel, const OUString& rDateString ) { - ScDocument& rDoc = getScDocument(); - SvNumberFormatter* pFormatter = rDoc.GetFormatTable(); - - double fValue = 0.0; - sal_uInt32 nFormatIndex = 0; - bool bValid = pFormatter->IsNumberFormat( rDateString, nFormatIndex, fValue ); + css::util::DateTime aDateTime; + if (!sax::Converter::parseDateTime( aDateTime, nullptr, rDateString)) + { + SAL_WARN("sc.filter", "SheetDataBuffer::setDateCell - could not parse: " << rDateString); + // At least don't lose data. + setStringCell( rModel, rDateString); + return; + } - if(bValid) - setValueCell( rModel, fValue ); + double fSerial = getUnitConverter().calcSerialFromDateTime( aDateTime); + setValueCell( rModel, fSerial); } void SheetDataBuffer::createSharedFormula(const ScAddress& rAddr, const ApiTokenSequence& rTokens) commit 9b6320bb348ec3c0342c2c102cbcb34e62fe551f Author: Eike Rathke <[email protected]> Date: Mon Sep 4 12:57:16 2017 +0200 Resolves: tdf#103734 propagate error from matrix to MIN()/MAX() (cherry picked from commit 9e694c747954078442d47d3d7bd1d4db283b96ff) Conflicts: sc/source/core/tool/interpr1.cxx Backported. Change-Id: I1ebc5baf4957ef9e3d1477b803cf7fee02754360 Reviewed-on: https://gerrit.libreoffice.org/41886 Tested-by: Jenkins <[email protected]> Reviewed-by: Markus Mohrhard <[email protected]> (cherry picked from commit 149f28e9a5d66db18ffb36547b2ba394c303fc4d) diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 22ae9153e5c9..16a902e21171 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -3510,7 +3510,9 @@ void ScInterpreter::ScMin( bool bTextAsZero ) SetError(FormulaError::IllegalParameter); } } - if ( nVal < nMin ) + if (!rtl::math::isFinite(nVal)) + PushError( GetDoubleErrorValue( nVal)); + else if ( nVal < nMin ) PushDouble(0.0); else PushDouble(nMin); @@ -3605,7 +3607,9 @@ void ScInterpreter::ScMax( bool bTextAsZero ) SetError(FormulaError::IllegalParameter); } } - if ( nVal > nMax ) + if (!rtl::math::isFinite(nVal)) + PushError( GetDoubleErrorValue( nVal)); + else if ( nVal > nMax ) PushDouble(0.0); else PushDouble(nMax); diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx index 30fb6eb0b36f..ae64e61234af 100644 --- a/sc/source/core/tool/scmatrix.cxx +++ b/sc/source/core/tool/scmatrix.cxx @@ -1385,6 +1385,10 @@ struct MaxOp static double init() { return -std::numeric_limits<double>::max(); } static double compare(double left, double right) { + if (!rtl::math::isFinite(left)) + return left; + if (!rtl::math::isFinite(right)) + return right; return std::max(left, right); } @@ -1403,6 +1407,10 @@ struct MinOp static double init() { return std::numeric_limits<double>::max(); } static double compare(double left, double right) { + if (!rtl::math::isFinite(left)) + return left; + if (!rtl::math::isFinite(right)) + return right; return std::min(left, right); } commit 80c25a05f84b3949c2faf050f93f49d4088ec832 Author: Eike Rathke <[email protected]> Date: Wed Sep 27 18:58:07 2017 +0200 Resolves: tdf#112523 do not use anything Ascii in UI context Change-Id: I0854f7b1e6e0bf51d8b4c7d846fad9b0ff25e763 (cherry picked from commit 86910087fa41956aad6a22943bfbeb158e205dcd) Reviewed-on: https://gerrit.libreoffice.org/42872 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Michael Stahl <[email protected]> (cherry picked from commit f38e9f1d194e23e455c69e9417185986daeccc39) diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index 5c2a6112025f..6efbf8ac55aa 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -1294,7 +1294,7 @@ namespace { bool needToExtendSelection(const OUString& rSelectedText, const OUString& rInsertText) { - return !rInsertText.startsWithIgnoreAsciiCase(rSelectedText); + return !ScGlobal::GetpTransliteration()->isMatch( rSelectedText, rInsertText); } void completeFunction( EditView* pView, const OUString& rInsert, bool& rParInserted )
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
