summaryrefslogtreecommitdiff
path: root/external
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2018-10-25 10:18:03 +0200
committerStephan Bergmann <sbergman@redhat.com>2018-10-25 13:21:37 +0200
commit749ef30c823e595f42e9844fb438441250389a0a (patch)
tree347d9b9a504eca4a1aa067d60205569c9ab51df5 /external
parent01679ba1373f1d1439d7bd5c350d48831a06ce84 (diff)
Fix external/hunspell/0001-recent-Hunspell-fixes-for-suggestion-spelling-...
...introduced with b691e5824a6346d2fe7f702b5280b56532a2f89e "tdf#118162 spell checking: fix freezing and add missing OCONV", leaving HunspellImpl::suggest_internal's newly introduced out-parameters uninitialized when the function returns early, causing HunspellImpl::suggest to use capwords uninitialized, as seen when invoking spell-checking in LO built with UBSan: > hunspell.cxx:907:7: runtime error: load of value 160, which is not a valid value for type 'bool' > #0 in HunspellImpl::suggest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) at workdir/UnpackedTarball/hunspell/src/hunspell/hunspell.cxx:907:7 (instdir/program/../program/libspelllo.so +0x288ccd) > #1 in Hunspell::suggest(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) at workdir/UnpackedTarball/hunspell/src/hunspell/hunspell.cxx:888:18 (instdir/program/../program/libspelllo.so +0x288693) > #2 in SpellChecker::GetProposals(rtl::OUString const&, com::sun::star::lang::Locale const&) at lingucomponent/source/spellcheck/spell/sspellimp.cxx:467:56 (instdir/program/../program/libspelllo.so +0x202913) > #3 in SpellChecker::spell(rtl::OUString const&, com::sun::star::lang::Locale const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at lingucomponent/source/spellcheck/spell/sspellimp.cxx:520:17 (instdir/program/../program/libspelllo.so +0x203b84) > #4 in non-virtual thunk to SpellChecker::spell(rtl::OUString const&, com::sun::star::lang::Locale const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at lingucomponent/source/spellcheck/spell/sspellimp.cxx (instdir/program/../program/libspelllo.so +0x203e62) > #5 in SpellCheckerDispatcher::spell_Impl(rtl::OUString const&, o3tl::strong_int<unsigned short, LanguageTypeTag>, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at linguistic/source/spelldsp.cxx:484:44 (instdir/program/liblnglo.so +0x672505) > #6 in SpellCheckerDispatcher::spell(rtl::OUString const&, com::sun::star::lang::Locale const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at linguistic/source/spelldsp.cxx:227:12 (instdir/program/liblnglo.so +0x670040) > #7 in SpellCheckerDispatcher::spell(rtl::OUString const&, short, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at linguistic/source/spelldsp.cxx:768:12 (instdir/program/liblnglo.so +0x67b353) > #8 in non-virtual thunk to SpellCheckerDispatcher::spell(rtl::OUString const&, short, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at linguistic/source/spelldsp.cxx (instdir/program/liblnglo.so +0x67b538) > #9 in Thesaurus::queryMeanings(rtl::OUString const&, com::sun::star::lang::Locale const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at lingucomponent/source/thesaurus/libnth/nthesimp.cxx:433:27 (instdir/program/../program/liblnthlo.so +0x88315) > #10 in non-virtual thunk to Thesaurus::queryMeanings(rtl::OUString const&, com::sun::star::lang::Locale const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at lingucomponent/source/thesaurus/libnth/nthesimp.cxx (instdir/program/../program/liblnthlo.so +0x8a322) > #11 in ThesaurusDispatcher::queryMeanings(rtl::OUString const&, com::sun::star::lang::Locale const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at linguistic/source/thesdsp.cxx:181:40 (instdir/program/liblnglo.so +0x6b6fa5) > #12 in non-virtual thunk to ThesaurusDispatcher::queryMeanings(rtl::OUString const&, com::sun::star::lang::Locale const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at linguistic/source/thesdsp.cxx (instdir/program/liblnglo.so +0x6b7ca2) > #13 in ThesaurusMenuController::getMeanings(std::__debug::vector<rtl::OUString, std::allocator<rtl::OUString> >&, rtl::OUString const&, com::sun::star::lang::Locale const&, unsigned long) at framework/source/uielement/thesaurusmenucontroller.cxx:117:31 (instdir/program/../program/libfwklo.so +0x1be1a9a) > #14 in ThesaurusMenuController::fillPopupMenu() at framework/source/uielement/thesaurusmenucontroller.cxx:75:5 (instdir/program/../program/libfwklo.so +0x1bdf973) > #15 in ThesaurusMenuController::statusChanged(com::sun::star::frame::FeatureStateEvent const&) at framework/source/uielement/thesaurusmenucontroller.cxx:63:9 (instdir/program/../program/libfwklo.so +0x1bdf24d) > #16 in SfxDispatchController_Impl::addStatusListener(com::sun::star::uno::Reference<com::sun::star::frame::XStatusListener> const&, com::sun::star::util::URL const&) at sfx2/source/control/unoctitm.cxx:861:16 (instdir/program/libsfxlo.so +0x2b6851f) > #17 in SfxOfficeDispatch::addStatusListener(com::sun::star::uno::Reference<com::sun::star::frame::XStatusListener> const&, com::sun::star::util::URL const&) at sfx2/source/control/unoctitm.cxx:249:16 (instdir/program/libsfxlo.so +0x2b671d4) > #18 in svt::PopupMenuControllerBase::updateCommand(rtl::OUString const&) at svtools/source/uno/popupmenucontrollerbase.cxx:189:20 (instdir/program/libsvtlo.so +0x2b0ef9e) > #19 in svt::PopupMenuControllerBase::updatePopupMenu() at svtools/source/uno/popupmenucontrollerbase.cxx:173:5 (instdir/program/libsvtlo.so +0x2b0e66f) > #20 in svt::PopupMenuControllerBase::setPopupMenu(com::sun::star::uno::Reference<com::sun::star::awt::XPopupMenu> const&) at svtools/source/uno/popupmenucontrollerbase.cxx:357:5 (instdir/program/libsvtlo.so +0x2b13e92) > #21 in framework::MenuBarManager::CreatePopupMenuController(framework::MenuBarManager::MenuItemHandler*) at framework/source/uielement/menubarmanager.cxx:984:31 (instdir/program/../program/libfwklo.so +0x1a9ff7e) > #22 in framework::MenuBarManager::Activate(Menu*) at framework/source/uielement/menubarmanager.cxx:737:50 (instdir/program/../program/libfwklo.so +0x1a94daa) > #23 in framework::MenuBarManager::LinkStubActivate(void*, Menu*) at framework/source/uielement/menubarmanager.cxx:605:1 (instdir/program/../program/libfwklo.so +0x1a8f150) > #24 in Link<Menu*, bool>::Call(Menu*) const at include/tools/link.hxx:84:45 (instdir/program/libvcllo.so +0x3bda2ae) > #25 in Menu::Activate() at vcl/source/window/menu.cxx:269:28 (instdir/program/libvcllo.so +0x3b75b01) > #26 in PopupMenu::ImplExecute(VclPtr<vcl::Window> const&, tools::Rectangle const&, FloatWinPopupFlags, Menu*, bool) at vcl/source/window/menu.cxx:2849:5 (instdir/program/libvcllo.so +0x3bcc12e) > #27 in PopupMenu::Execute(vcl::Window*, tools::Rectangle const&, PopupMenuFlags) at vcl/source/window/menu.cxx:2788:12 (instdir/program/libvcllo.so +0x3bc95d6) > #28 in PopupMenu::Execute(vcl::Window*, Point const&) at vcl/source/window/menu.cxx:2763:12 (instdir/program/libvcllo.so +0x3bc8c20) > #29 in SfxDispatcher::ExecutePopup(rtl::OUString const&, vcl::Window*, Point const*) at sfx2/source/control/dispatch.cxx:1857:23 (instdir/program/libsfxlo.so +0x27980ec) > #30 in SfxDispatcher::ExecutePopup(vcl::Window*, Point const*) at sfx2/source/control/dispatch.cxx:1806:19 (instdir/program/libsfxlo.so +0x279500f) > #31 in SwEditWin::Command(CommandEvent const&) at sw/source/uibase/docvw/edtwin.cxx:5224:25 (instdir/program/../program/libswlo.so +0xd546dd0) > #32 in ImplCallCommand(VclPtr<vcl::Window> const&, CommandEventId, void const*, bool, Point const*) at vcl/source/window/winproc.cxx:228:17 (instdir/program/libvcllo.so +0x4283a3c) > #33 in ImplHandleMouseEvent(VclPtr<vcl::Window> const&, MouseNotifyEvent, bool, long, long, unsigned long, unsigned short, MouseEventModifiers) at vcl/source/window/winproc.cxx:792:34 (instdir/program/libvcllo.so +0x427e12e) > #34 in ImplHandleSalMouseButtonDown(vcl::Window*, SalMouseEvent const*) at vcl/source/window/winproc.cxx:1982:12 (instdir/program/libvcllo.so +0x429c206) > #35 in ImplWindowFrameProc(vcl::Window*, SalEvent, void const*) at vcl/source/window/winproc.cxx:2316:20 (instdir/program/libvcllo.so +0x4296785) > #36 in SalFrame::CallCallback(SalEvent, void const*) const at vcl/inc/salframe.hxx:280:29 (instdir/program/libvclplug_gtk3lo.so +0xb9badd) > #37 in GtkSalFrame::CallCallbackExc(SalEvent, void const*) const at vcl/unx/gtk3/gtk3gtkframe.cxx:4477:16 (instdir/program/libvclplug_gtk3lo.so +0xb139f3) > #38 in GtkSalFrame::signalButton(_GtkWidget*, _GdkEventButton*, void*) at vcl/unx/gtk3/gtk3gtkframe.cxx:2690:16 (instdir/program/libvclplug_gtk3lo.so +0xb2f96e) > #39 in _gtk_marshal_BOOLEAN__BOXED at /usr/src/debug/gtk3-3.24.1-1.fc29.x86_64/gtk/gtkmarshalers.c:83:14 (/lib64/libgtk-3.so.0 +0x3e16fa) [...] Change-Id: I613bf37ded8c525301297d96e0d33826c9a48215 Reviewed-on: https://gerrit.libreoffice.org/62345 Reviewed-by: László Németh <nemeth@numbertext.org> Tested-by: Jenkins
Diffstat (limited to 'external')
-rw-r--r--external/hunspell/0001-recent-Hunspell-fixes-for-suggestion-spelling-and-an.patch13
1 files changed, 7 insertions, 6 deletions
diff --git a/external/hunspell/0001-recent-Hunspell-fixes-for-suggestion-spelling-and-an.patch b/external/hunspell/0001-recent-Hunspell-fixes-for-suggestion-spelling-and-an.patch
index 7c9b255abe74..d4d822f92185 100644
--- a/external/hunspell/0001-recent-Hunspell-fixes-for-suggestion-spelling-and-an.patch
+++ b/external/hunspell/0001-recent-Hunspell-fixes-for-suggestion-spelling-and-an.patch
@@ -574,33 +574,34 @@ index d6e871f..0dcd748 100644
// output conversion
RepList* rl = (pAMgr) ? pAMgr->get_oconvtable() : NULL;
if (rl) {
-@@ -902,7 +979,8 @@ std::vector<std::string> HunspellImpl::suggest(const std::string& word) {
+@@ -902,7 +979,12 @@ std::vector<std::string> HunspellImpl::suggest(const std::string& word) {
return slst;
}
-std::vector<std::string> HunspellImpl::suggest_internal(const std::string& word) {
+std::vector<std::string> HunspellImpl::suggest_internal(const std::string& word,
+ bool& capwords, size_t& abbv, int& captype) {
++ captype = NOCAP;
++ abbv = 0;
++ capwords = false;
++
std::vector<std::string> slst;
int onlycmpdsug = 0;
-@@ -920,8 +998,8 @@ std::vector<std::string> HunspellImpl::suggest_internal(const std::string& word)
+@@ -920,8 +998,6 @@ std::vector<std::string> HunspellImpl::suggest_internal(const std::string& word)
if (word.size() >= MAXWORDLEN)
return slst;
}
- int captype = NOCAP;
- size_t abbv = 0;
-+ captype = NOCAP;
-+ abbv = 0;
size_t wl = 0;
std::string scw;
-@@ -942,9 +1020,13 @@ std::vector<std::string> HunspellImpl::suggest_internal(const std::string& word)
+@@ -942,9 +1020,12 @@ std::vector<std::string> HunspellImpl::suggest_internal(const std::string& word)
return slst;
}
- int capwords = 0;
-+ capwords = false;
bool good = false;
+ HUNSPELL_THREAD_LOCAL clock_t timelimit;