[libreoffice/f16] Resolves: rhbz#799628 crash with chewing IM with g3g

Caolán McNamara caolanm at fedoraproject.org
Tue Mar 6 12:00:41 UTC 2012


commit 23127530750883678ecfe3520a65ca5a8dd8ef42
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Mar 6 12:00:21 2012 +0000

    Resolves: rhbz#799628 crash with chewing IM with g3g

 ...hbz-799628-crash-with-chewing-IM-with-g3g.patch |   32 +++++++++
 0001-silence-SolarMutex-not-locked-spew.patch      |   68 ++++++++++++++++++++
 libreoffice.spec                                   |    7 ++-
 3 files changed, 106 insertions(+), 1 deletions(-)
---
diff --git a/0001-Related-rhbz-799628-crash-with-chewing-IM-with-g3g.patch b/0001-Related-rhbz-799628-crash-with-chewing-IM-with-g3g.patch
new file mode 100644
index 0000000..7a82101
--- /dev/null
+++ b/0001-Related-rhbz-799628-crash-with-chewing-IM-with-g3g.patch
@@ -0,0 +1,32 @@
+From 7e3ebe35a6a1a69b3a36f7eb41e1ec5c5905f714 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Mon, 5 Mar 2012 21:02:45 +0000
+Subject: [PATCH] Related: rhbz#799628 crash with chewing-IM with g3g
+
+---
+ vcl/unx/gtk/window/gtkframe.cxx |    8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
+index 112e066..1cd1bd0 100644
+--- a/vcl/unx/gtk/window/gtkframe.cxx
++++ b/vcl/unx/gtk/window/gtkframe.cxx
+@@ -3984,8 +3984,14 @@ void GtkSalFrame::IMHandler::signalIMPreeditChanged( GtkIMContext*, gpointer im_
+         g_slist_free (attr_list);
+ 
+         // Set the sal attributes on our text
+-        for (int i = start; i < end; i++)
++        for (int i = start; i < end; ++i)
++        {
++            SAL_WARN_IF(i >= static_cast<int>(pThis->m_aInputFlags.size()),
++                "vcl.gtk", "pango attrib out of range?");
++            if (i >= static_cast<int>(pThis->m_aInputFlags.size()))
++                continue;
+             pThis->m_aInputFlags[i] |= sal_attr;
++        }
+     } while (pango_attr_iterator_next (iter));
+ 
+     pThis->m_aInputEvent.mpTextAttr         = &pThis->m_aInputFlags[0];
+-- 
+1.7.7.6
+
diff --git a/0001-silence-SolarMutex-not-locked-spew.patch b/0001-silence-SolarMutex-not-locked-spew.patch
new file mode 100644
index 0000000..8893ea2
--- /dev/null
+++ b/0001-silence-SolarMutex-not-locked-spew.patch
@@ -0,0 +1,68 @@
+From f9a4af41ca574760dbd22c8207661fabb6823e3b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Tue, 6 Mar 2012 09:45:08 +0000
+Subject: [PATCH] silence SolarMutex not locked spew
+
+---
+ sw/source/core/txtnode/fntcache.cxx |    2 ++
+ sw/source/core/view/viewsh.cxx      |    2 ++
+ vcl/unx/gtk/window/gtkframe.cxx     |    3 +++
+ 3 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx
+index 2ec7fb9..4ddeb3d 100644
+--- a/sw/source/core/txtnode/fntcache.cxx
++++ b/sw/source/core/txtnode/fntcache.cxx
+@@ -382,6 +382,8 @@ sal_uInt16 SwFntObj::GetFontLeading( const ViewShell *pSh, const OutputDevice& r
+     {
+         if ( USHRT_MAX == nGuessedLeading || USHRT_MAX == nExtLeading )
+         {
++            SolarMutexGuard aGuard;
++
+             const Font aOldFnt( rOut.GetFont() );
+             ((OutputDevice&)rOut).SetFont( *pPrtFont );
+             const FontMetric aMet( rOut.GetFontMetric() );
+diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
+index 0413382..774000c 100644
+--- a/sw/source/core/view/viewsh.cxx
++++ b/sw/source/core/view/viewsh.cxx
+@@ -253,6 +253,8 @@ void ViewShell::ImplEndAction( const sal_Bool bIdleEnd )
+     {
+         if ( !nLockPaint )
+         {
++            SolarMutexGuard aGuard;
++
+             sal_Bool bPaintsFromSystem = aInvalidRect.HasArea();
+             GetWin()->Update();
+             if ( aInvalidRect.HasArea() )
+diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
+index 24336ce..a2e6df8 100644
+--- a/vcl/unx/gtk/window/gtkframe.cxx
++++ b/vcl/unx/gtk/window/gtkframe.cxx
+@@ -3835,6 +3835,7 @@ void GtkSalFrame::IMHandler::signalIMCommit( GtkIMContext* CONTEXT_ARG, gchar* p
+ {
+     GtkSalFrame::IMHandler* pThis = (GtkSalFrame::IMHandler*)im_handler;
+ 
++    SolarMutexGuard aGuard;
+     vcl::DeletionListener aDel( pThis->m_pFrame );
+     // open a block that will end the GTK_YIELD_GRAB before calling preedit changed again
+     {
+@@ -4003,6 +4004,7 @@ void GtkSalFrame::IMHandler::signalIMPreeditChanged( GtkIMContext*, gpointer im_
+ 
+     GTK_YIELD_GRAB();
+ 
++    SolarMutexGuard aGuard;
+     vcl::DeletionListener aDel( pThis->m_pFrame );
+ 
+     pThis->m_pFrame->CallCallback( SALEVENT_EXTTEXTINPUT, (void*)&pThis->m_aInputEvent);
+@@ -4023,6 +4025,7 @@ void GtkSalFrame::IMHandler::signalIMPreeditEnd( GtkIMContext*, gpointer im_hand
+ 
+     pThis->m_bPreeditJustChanged = true;
+ 
++    SolarMutexGuard aGuard;
+     vcl::DeletionListener aDel( pThis->m_pFrame );
+     pThis->doCallEndExtTextInput();
+     if( ! aDel.isDeleted() )
+-- 
+1.7.7.6
+
diff --git a/libreoffice.spec b/libreoffice.spec
index c9c3e95..8321895 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -231,6 +231,8 @@ Patch112: 0001-fix-up-endianness-of-lowhanging-QuickReads.patch
 Patch113: 0001-fix-up-endianness-of-higher-hanging-QuickReads.patch
 Patch114: 0001-fdo-39694-SwTxtFld-do-expand-the-field-in-the-ctor.patch
 Patch115: 0002-fdo-42073-sw-expand-all-text-fields-when-setting-pro.patch
+Patch116: 0001-Related-rhbz-799628-crash-with-chewing-IM-with-g3g.patch
+Patch117: 0001-silence-SolarMutex-not-locked-spew.patch
 
 %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
 %define instdir %{_libdir}
@@ -1143,6 +1145,8 @@ mv -f redhat.soc extras/source/palettes/standard.soc
 %patch113 -p1 -b .fix-up-endianness-of-higher-hanging-QuickReads.patch
 %patch114 -p1 -b .fdo-39694-SwTxtFld-do-expand-the-field-in-the-ctor.patch
 %patch115 -p1 -b .fdo-42073-sw-expand-all-text-fields-when-setting-pro.patch
+%patch116 -p1 -b .rhbz-799628-crash-with-chewing-IM-with-g3g.patch
+%patch117 -p1 -b .silence-SolarMutex-not-locked-spew.patch
 
 # these are horribly incomplete--empty translations and copied english
 # strings with spattering of translated strings
@@ -2453,7 +2457,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
 %endif
 
 %changelog
-* Fri Mar 02 2012 Caolán McNamara <caolanm at redhat.com> - 3.4.5.2-8.UNBUILT
+* Tue Mar 06 2012 Caolán McNamara <caolanm at redhat.com> - 3.4.5.2-8.UNBUILT
 - Resolves: fdo#31966 do not create an empty slide when printing handouts
 - fixes nsplugin
 - Resolves: fdo#44816 crash using instances dialog of dataform navigator
@@ -2461,6 +2465,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
 - Resolves: rhbz#798026 fix endianess assumptions of lotuswordpro filter
 - Resolves: fdo#39694 SwTxtFld: expand new fields to fix race condition
 - Resolves: fdo#42073 sw: expand all text fields when setting properties
+- Resolves: rhbz#799628 crash with chewing IM with g3g
 
 * Wed Feb 29 2012 Caolán McNamara <caolanm at redhat.com> - 3.4.5.2-7
 - Resolves: rhbz#788045 swriter --help wouldn't display help


More information about the scm-commits mailing list