[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