[ibus-chewing] fix crash related to gval/gvar with patch from upstream (#696864)

Jens Petersen petersen at fedoraproject.org
Wed Apr 27 05:44:16 UTC 2011


commit 23e400e03862f547c76f62d5335ca260e2320c1b
Author: Jens Petersen <petersen at redhat.com>
Date:   Wed Apr 27 14:44:05 2011 +0900

    fix crash related to gval/gvar with patch from upstream (#696864)

 ibus-chewing-696864-abrt-ibus-1.4.patch |   84 +++++++++++++++++++++++++++++++
 ibus-chewing.spec                       |   15 +++---
 2 files changed, 92 insertions(+), 7 deletions(-)
---
diff --git a/ibus-chewing-696864-abrt-ibus-1.4.patch b/ibus-chewing-696864-abrt-ibus-1.4.patch
new file mode 100644
index 0000000..fc2be85
--- /dev/null
+++ b/ibus-chewing-696864-abrt-ibus-1.4.patch
@@ -0,0 +1,84 @@
+From ff138d7a18b7577e5f04f852bd3caf87cbc9e7cc Mon Sep 17 00:00:00 2001
+From: Ding-Yi Chen <dingyichen at gmail.com>
+Date: Thu, 20 Jan 2011 17:03:07 +1000
+Subject: [PATCH] Addressed comments of yusake
+
+---
+ src/IBusChewingEngine-def.c |   30 ++++++++++++++++++++++--------
+ 1 files changed, 22 insertions(+), 8 deletions(-)
+
+diff --git a/src/IBusChewingEngine-def.c b/src/IBusChewingEngine-def.c
+index 90c0384..8c90766 100644
+--- a/src/IBusChewingEngine-def.c
++++ b/src/IBusChewingEngine-def.c
+@@ -391,21 +391,29 @@ this option determines how these status be synchronized. Valid values:\n\
+ void g_variant_to_g_value(GVariant *gVar, GValue *gValue){
+     const GVariantType *gVType=g_variant_get_type(gVar);
+     if (g_variant_type_is_subtype_of(gVType, G_VARIANT_TYPE_BOOLEAN)){
++	g_value_init(gValue, G_TYPE_BOOLEAN);
+ 	g_value_set_boolean(gValue, g_variant_get_boolean(gVar));
+     }else if (g_variant_type_is_subtype_of(gVType, G_VARIANT_TYPE_UINT16)){
++	g_value_init(gValue, G_TYPE_UINT);
+ 	g_value_set_uint(gValue, g_variant_get_uint16(gVar));
+     }else if (g_variant_type_is_subtype_of(gVType, G_VARIANT_TYPE_UINT32)){
++	g_value_init(gValue, G_TYPE_UINT);
+ 	g_value_set_uint(gValue, g_variant_get_uint32(gVar));
+     }else if (g_variant_type_is_subtype_of(gVType, G_VARIANT_TYPE_UINT64)){
++	g_value_init(gValue, G_TYPE_UINT64);
+ 	g_value_set_uint64(gValue, g_variant_get_uint64(gVar));
+     }else if (g_variant_type_is_subtype_of(gVType, G_VARIANT_TYPE_INT16)){
++	g_value_init(gValue, G_TYPE_INT);
+ 	g_value_set_int(gValue, g_variant_get_int16(gVar));
+     }else if (g_variant_type_is_subtype_of(gVType, G_VARIANT_TYPE_INT32)){
++	g_value_init(gValue, G_TYPE_INT);
+ 	g_value_set_int(gValue, g_variant_get_int32(gVar));
+     }else if (g_variant_type_is_subtype_of(gVType, G_VARIANT_TYPE_INT64)){
++	g_value_init(gValue, G_TYPE_INT);
+ 	g_value_set_int64(gValue, g_variant_get_int64(gVar));
+     }else if (g_variant_type_is_subtype_of(gVType, G_VARIANT_TYPE_STRING)){
+-	g_value_set_int64(gValue, g_variant_get_string(gVar, NULL));
++	g_value_init(gValue, G_TYPE_STRING);
++	g_value_set_string(gValue, g_variant_get_string(gVar, NULL));
+     }
+ }
+ 
+@@ -419,8 +427,14 @@ GVariant *g_value_to_g_variant(GValue *gValue){
+ 	case G_TYPE_UINT:
+ 	    gVar=g_variant_new_uint32(g_value_get_uint(gValue));
+ 	    break;
++	case G_TYPE_UINT64:
++	    gVar=g_variant_new_uint64(g_value_get_uint(gValue));
++	    break;
+ 	case G_TYPE_INT:
+-	    gVar=g_variant_new_int32(g_value_get_int(gValue));
++	    gVar=g_variant_new_int32(g_value_get_uint(gValue));
++	    break;
++	case G_TYPE_INT64:
++	    gVar=g_variant_new_int64(g_value_get_uint(gValue));
+ 	    break;
+ 	case G_TYPE_STRING:
+ 	    gVar=g_variant_new_string(g_value_get_string(gValue));
+@@ -435,14 +449,14 @@ GVariant *g_value_to_g_variant(GValue *gValue){
+ 
+ static gboolean ibus_chewing_config_get_value(IBusConfig *config, const gchar *section, const gchar *key, GValue *gValue){
+ #if IBUS_VERSION >= 10399
+-    GVariant *gVar=g_variant_ref_sink(ibus_config_get_value(config, section, key));
+-    if (gVar!=NULL){
+-	g_variant_to_g_value(gVar, gValue);
+-	g_variant_unref(gVar);
+-	return TRUE;
+-    }else{
++    GVariant *gVar=ibus_config_get_value(config, section, key);
++    if (gVar==NULL){
+ 	return FALSE;
+     }
++    g_variant_ref_sink(gVar);
++    g_variant_to_g_value(gVar, gValue);
++    g_variant_unref(gVar);
++    return TRUE;
+ #else
+     return ibus_config_get_value(config, section, key, gValue);
+ #endif
+-- 
+1.7.4.4
+
diff --git a/ibus-chewing.spec b/ibus-chewing.spec
index 5cf7665..ca43df0 100644
--- a/ibus-chewing.spec
+++ b/ibus-chewing.spec
@@ -1,14 +1,13 @@
 Name:       ibus-chewing
 Version:    1.3.9.2
-Release:    2%{?dist}
+Release:    3%{?dist}
 Summary:    The Chewing engine for IBus input platform
 Summary(zh_TW): IBus新酷音輸入法
 License:    GPLv2+
 Group:      System Environment/Libraries
 URL:        http://code.google.com/p/ibus/
 Source0:    http://ibus.googlecode.com/files/%{name}-%{version}-Source.tar.gz
-
-BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Patch0:	    ibus-chewing-696864-abrt-ibus-1.4.patch
 
 BuildRequires:  gettext-devel
 BuildRequires:  gtk2-devel
@@ -49,6 +48,7 @@ IBus-chewing 是新酷音輸入法的IBus前端。
 
 %prep
 %setup -q -n %{name}-%{version}-Source
+%patch0 -p1 -b .abrt-ibus-1.4
 
 %build
 # $RPM_OPT_FLAGS should be  loaded from cmake macro.
@@ -56,7 +56,6 @@ IBus-chewing 是新酷音輸入法的IBus前端。
 %__make VERBOSE=1  %{?_smp_mflags}
 
 %install
-%__rm -rf $RPM_BUILD_ROOT
 %__make install DESTDIR=$RPM_BUILD_ROOT
 # We install document using %doc
 (cd $RPM_BUILD_ROOT//usr/share/doc/ibus-chewing-1.3.9.2
@@ -85,9 +84,6 @@ export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
 gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || :
 fi
 
-%clean
-%__rm -rf $RPM_BUILD_ROOT
-
 %files -f %{name}.lang
 %defattr(-,root,root,-)
 %doc RELEASE-NOTES.txt AUTHORS README ChangeLog COPYING USER-GUIDE
@@ -97,6 +93,11 @@ fi
 %config(noreplace) %{_sysconfdir}/gconf/schemas/%{name}.schemas
 
 %changelog
+* Tue Apr 26 2011 Daiki Ueno <dueno at redhat.com> - 1.3.9.2-3
+- Apply a patch to fix crash with ibus 1.4
+- Resolves: #696864
+- defining and cleaning buildroot is deprecated (petersen)
+
 * Wed Feb 09 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.3.9.2-2
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
 


More information about the scm-commits mailing list