[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RFS: fix for abiword format painter crash



I discovered and reported a bug in abiword that causes it to crash when using
the format painter. I've applied a patch from the upstream SVN that fixes the
bug and rebuilt the package using sbuild ready to be uploaded.

The binary and source packages are available here:
http://edwardbetts.com/debian/abiword/

Abiword is maintained by the Debian QA team.

I'd appreciate if somebody could look over the fix and upload it to the
archive.

My changes to the package repo are available on my web server, and below.
http://edwardbetts.com/debian/abiword.git/

It'd be great if whoever uploads the packages could also push to
git://anonscm.debian.org/collab-maint/abiword.git

Thanks,
-- 
Edward.

---
 debian/changelog                        |  6 +++
 debian/patches/format-painter-fix.patch | 92 +++++++++++++++++++++++++++++++++
 debian/patches/series                   |  1 +
 3 files changed, 99 insertions(+)
 create mode 100644 debian/patches/format-painter-fix.patch

diff --git a/debian/changelog b/debian/changelog
index 912e9b1..dfff800 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+abiword (3.0.0-8) unstable; urgency=medium
+
+  * Apply an upstream patch to fix format painter bug. (Closes: #766845). 
+
+ -- Edward Betts <edward@4angle.com>  Sat, 15 Nov 2014 18:38:55 +0000
+
 abiword (3.0.0-7) unstable; urgency=medium
 
   * Build-Depends: libjpeg8-dev --> libjpeg-dev (Closes: #763464).
diff --git a/debian/patches/format-painter-fix.patch b/debian/patches/format-painter-fix.patch
new file mode 100644
index 0000000..99c048a
--- /dev/null
+++ b/debian/patches/format-painter-fix.patch
@@ -0,0 +1,92 @@
+Last-Update: 2014-11-15
+Bug-Debian: http://bugs.debian.org/766845
+Bug-Abiword: http://bugzilla.abisource.com/13586
+Description: fix format painter bug
+
+Index: abiword/src/text/fmt/gtk/fv_UnixSelectionHandles.cpp
+===================================================================
+--- abiword.orig/src/text/fmt/gtk/fv_UnixSelectionHandles.cpp
++++ abiword/src/text/fmt/gtk/fv_UnixSelectionHandles.cpp
+@@ -36,42 +36,60 @@ static void handle_dragged_cb (FvTextHan
+ 
+ 	mode = _fv_text_handle_get_mode (handle);
+ 
+-	if (pos == FV_TEXT_HANDLE_POSITION_SELECTION_START)
++	if (pos == FV_TEXT_HANDLE_POSITION_SELECTION_START) {
+ 		handles->updateSelectionStart ((UT_sint32)x, (UT_sint32)y);
++        }
+ 	else {
+-		if (mode == FV_TEXT_HANDLE_MODE_SELECTION)
++		if (mode == FV_TEXT_HANDLE_MODE_SELECTION) {
+ 			handles->updateSelectionEnd ((UT_sint32)x, (UT_sint32)y);
+-                else
++                }
++                else {
+ 			handles->updateCursor((UT_sint32)x, (UT_sint32)y);
++                }
+ 	}
+ }
+ 
+ FV_UnixSelectionHandles::FV_UnixSelectionHandles(FV_View *view, FV_Selection selection)
+ 	: FV_SelectionHandles (view, selection)
++	, m_text_handle(NULL)
+ {
+ 	XAP_Frame * pFrame = static_cast<XAP_Frame*>(m_pView->getParentData());
+-	XAP_UnixFrameImpl * pFrameImpl =static_cast<XAP_UnixFrameImpl *>( pFrame->getFrameImpl());
+-	GtkWidget * pWidget = pFrameImpl->getViewWidget();
+-
+-	m_text_handle = _fv_text_handle_new (pWidget);
+-        _fv_text_handle_set_relative_to (m_text_handle,
+-                                         gtk_widget_get_window (pWidget));
+-        g_signal_connect (m_text_handle, "handle-dragged",
+-                          G_CALLBACK(handle_dragged_cb), this);
++	// When saving to PDF (and printing) we don't have a frame
++	// See bug 13586
++	if (pFrame) {
++		XAP_UnixFrameImpl * pFrameImpl = static_cast<XAP_UnixFrameImpl *>(pFrame->getFrameImpl());
++		GtkWidget * pWidget = pFrameImpl->getViewWidget();
++
++		m_text_handle = _fv_text_handle_new (pWidget);
++		_fv_text_handle_set_relative_to (m_text_handle,
++						 gtk_widget_get_window (pWidget));
++		g_signal_connect (m_text_handle, "handle-dragged",
++				  G_CALLBACK(handle_dragged_cb), this);
++	}
+ }
+ 
+ FV_UnixSelectionHandles::~FV_UnixSelectionHandles()
+ {
++	if(!m_text_handle) {
++		return;
++	}
+ 	g_object_unref (m_text_handle);
+ }
+ 
+ void FV_UnixSelectionHandles::hide()
+ {
++	if(!m_text_handle) {
++		return;
++	}
+ 	_fv_text_handle_set_mode (m_text_handle, FV_TEXT_HANDLE_MODE_NONE);
+ }
+ 
+ void FV_UnixSelectionHandles::setCursorCoords(UT_sint32 x, UT_sint32 y, UT_uint32 height, bool visible)
+ {
++	if(!m_text_handle) {
++		return;
++	}
++
+ 	GdkRectangle rect;
+ 
+ 	_fv_text_handle_set_mode(m_text_handle, FV_TEXT_HANDLE_MODE_CURSOR);
+@@ -92,6 +110,10 @@ void FV_UnixSelectionHandles::setCursorC
+ void FV_UnixSelectionHandles::setSelectionCoords(UT_sint32 start_x, UT_sint32 start_y, UT_uint32 start_height, bool start_visible,
+                                                  UT_sint32 end_x, UT_sint32 end_y, UT_uint32 end_height, bool end_visible)
+ {
++	if(!m_text_handle) {
++		return;
++	}
++
+ 	GdkRectangle rect;
+ 
+ 	_fv_text_handle_set_mode(m_text_handle, FV_TEXT_HANDLE_MODE_SELECTION);
diff --git a/debian/patches/series b/debian/patches/series
index fcf5962..167d750 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -10,3 +10,4 @@ autosave.diff -p1
 ctrl-comma-subscript.diff -p1
 mime-types-desktop.diff -p1
 mime-types.diff -p1
+format-painter-fix.patch
-- 
2.1.3


Reply to: