Fix some issues

- Delete GZipped man files
- Resolves #2213145 Unselect Add button in Select Input Method dialog in setup
- Fix unaligned accesses in ibuscomposetable
This commit is contained in:
Takao Fujiwara 2023-06-11 22:23:58 +09:00
parent cc96b97435
commit a919795c0b
3 changed files with 624 additions and 5 deletions

View File

@ -1,6 +1,6 @@
From ffe82832ac5bc6aaa3d5a93004aae97a8b44a60c Mon Sep 17 00:00:00 2001
From f5790e1244fc6c83615ca4bc29494c7f16c73b6f Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Fri, 26 May 2023 06:35:13 +0900
Date: Sun, 11 Jun 2023 20:20:06 +0900
Subject: [PATCH] Fix SEGV in bus_panel_proxy_focus_in()
rhbz#1350291 SEGV in BUS_IS_CONNECTION(skip_connection) in
@ -11,9 +11,12 @@ rhbz#1767976 SEGV in assert(connection != NULL) in
bus_dbus_impl_connection_filter_cb()
call bus_connection_set_filter() in bus_dbus_impl_destroy().
rhbz#2213445 SEGV in bus_panel_proxy_new()
WIP: Add a GError.
rhbz#1601577 rhbz#1797726 SEGV in ibus_engine_desc_get_layout() in
bus_engine_proxy_new_internal()
WIP: Added a GError to get the error message to check why the SEGV happened.
WIP: Add a GError to get the error message to check why the SEGV happened.
rhbz#1663528 SEGV in g_mutex_clear() in bus_dbus_impl_destroy()
If the mutex is not unlocked, g_mutex_clear() causes assert.
@ -51,12 +54,13 @@ BUG=rhbz#2195895
---
bus/dbusimpl.c | 47 ++++++++++++++++++++++++---
bus/engineproxy.c | 44 +++++++++++++++++++------
bus/panelproxy.c | 9 +++++-
client/x11/main.c | 56 ++++++++++++++++++++++++++++----
portal/portal.c | 11 +++++++
src/ibusbus.c | 6 ++++
ui/gtk3/extension.vala | 4 +++
ui/gtk3/switcher.vala | 73 +++++++++++++++++++++++++-----------------
7 files changed, 191 insertions(+), 50 deletions(-)
8 files changed, 199 insertions(+), 51 deletions(-)
diff --git a/bus/dbusimpl.c b/bus/dbusimpl.c
index 59787a80..af2fbde2 100644
@ -246,6 +250,40 @@ index b3e16066..ba479b59 100644
/* FIXME: set destroy callback ? */
g_task_return_pointer (data->task, engine, NULL);
diff --git a/bus/panelproxy.c b/bus/panelproxy.c
index e6001ebf..00828fbc 100644
--- a/bus/panelproxy.c
+++ b/bus/panelproxy.c
@@ -122,6 +122,8 @@ bus_panel_proxy_new (BusConnection *connection,
const gchar *path = NULL;
GObject *obj;
BusPanelProxy *panel;
+ GError *error = NULL;
+ const gchar *message;
g_assert (BUS_IS_CONNECTION (connection));
@@ -138,7 +140,7 @@ bus_panel_proxy_new (BusConnection *connection,
obj = g_initable_new (BUS_TYPE_PANEL_PROXY,
NULL,
- NULL,
+ &error,
"g-object-path", path,
"g-interface-name", IBUS_INTERFACE_PANEL,
"g-connection", bus_connection_get_dbus_connection (connection),
@@ -146,6 +148,11 @@ bus_panel_proxy_new (BusConnection *connection,
"g-flags", G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
NULL);
+ if (error) {
+ /* TODO: rhbz#2213445 Why does this issue happen? */
+ message = error->message;
+ g_critical ("Failed to generate BusPanelProxy: %s", message);
+ }
panel = BUS_PANEL_PROXY (obj);
panel->panel_type = panel_type;
return panel;
diff --git a/client/x11/main.c b/client/x11/main.c
index 83d95cb7..804e40ed 100644
--- a/client/x11/main.c

View File

@ -917,3 +917,579 @@ index 69fb8abe..c9cf4469 100644
--
2.40.0
From 1a25975d9f55f18eab609e4d147dd32689e367f3 Mon Sep 17 00:00:00 2001
From: Emil Velikov <emil.l.velikov@gmail.com>
Date: Sun, 11 Jun 2023 16:16:35 +0900
Subject: [PATCH 1/2] makefile: don't gzip the man pages
Drop the gzip step from the manpages - distributions already do that as
needed. In addition this resolves the final reproducibility issue with
ibus.
BUG=https://github.com/ibus/ibus/pull/2514
---
bus/Makefile.am | 6 +-----
data/dconf/Makefile.am | 6 +-----
setup/Makefile.am | 6 +-----
tools/Makefile.am | 6 +-----
ui/gtk3/Makefile.am | 6 +-----
5 files changed, 5 insertions(+), 25 deletions(-)
diff --git a/bus/Makefile.am b/bus/Makefile.am
index e173ee25..d0445d02 100644
--- a/bus/Makefile.am
+++ b/bus/Makefile.am
@@ -169,7 +169,6 @@ EXTRA_DIST = \
CLEANFILES = \
$(man_one_DATA) \
- $(man_one_files) \
$(NULL)
$(libibus):
@@ -181,14 +180,11 @@ test: ibus-daemon
$(builddir)/ibus-daemon -v
man_one_in_files = ibus-daemon.1.in
-man_one_files = $(man_one_in_files:.1.in=.1)
-man_one_DATA =$(man_one_files:.1=.1.gz)
+man_one_DATA = $(man_one_in_files:.1.in=.1)
man_onedir = $(mandir)/man1
%.1: %.1.in
$(AM_V_GEN) sed \
-e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
mv $@.tmp $@
-%.1.gz: %.1
- $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@
-include $(top_srcdir)/git.mk
diff --git a/data/dconf/Makefile.am b/data/dconf/Makefile.am
index 5360f033..2352f770 100644
--- a/data/dconf/Makefile.am
+++ b/data/dconf/Makefile.am
@@ -38,15 +38,12 @@ dconfdb_DATA = 00-upstream-settings
{ rc=$$?; $(RM) -rf $@; exit $$rc; }
man_5_in_files = 00-upstream-settings.5.in ibus.5.in
-man_5_files = $(man_5_in_files:.5.in=.5)
-man_5_DATA =$(man_5_files:.5=.5.gz)
+man_5_DATA = $(man_5_in_files:.5.in=.5)
man_5dir = $(mandir)/man5
%.5: %.5.in
$(AM_V_GEN) sed \
-e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
mv $@.tmp $@
-%.5.gz: %.5
- $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@
install-data-hook:
if test -z "$(DESTDIR)"; then \
@@ -63,7 +60,6 @@ EXTRA_DIST = \
CLEANFILES = \
$(man_5_DATA) \
- $(man_5_files) \
$(NULL)
MAINTAINERCLEANFILES = \
diff --git a/setup/Makefile.am b/setup/Makefile.am
index 34c8f136..b34aa8fc 100644
--- a/setup/Makefile.am
+++ b/setup/Makefile.am
@@ -56,20 +56,16 @@ org.freedesktop.IBus.Setup.desktop: ibus-setup.desktop
$(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@
man_one_in_files = ibus-setup.1.in
-man_one_files = $(man_one_in_files:.1.in=.1)
-man_one_DATA =$(man_one_files:.1=.1.gz)
+man_one_DATA = $(man_one_in_files:.1.in=.1)
man_onedir = $(mandir)/man1
%.1: %.1.in
$(AM_V_GEN) sed \
-e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
mv $@.tmp $@
-%.1.gz: %.1
- $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@
CLEANFILES = \
$(desktop_DATA) \
$(man_one_DATA) \
- $(man_one_files) \
*.pyc \
ibus-setup \
$(NULL)
diff --git a/tools/Makefile.am b/tools/Makefile.am
index e300f9f3..0d00abed 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -113,15 +113,12 @@ libibusimmodule_la_LDFLAGS = \
$(NULL)
man_one_in_files = ibus.1.in
-man_one_files = $(man_one_in_files:.1.in=.1)
-man_one_DATA =$(man_one_files:.1=.1.gz)
+man_one_DATA = $(man_one_in_files:.1.in=.1)
man_onedir = $(mandir)/man1
%.1: %.1.in
$(AM_V_GEN) sed \
-e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
mv $@.tmp $@
-%.1.gz: %.1
- $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@
EXTRA_DIST = \
$(ibus_immodule_vapi) \
@@ -133,7 +130,6 @@ EXTRA_DIST = \
CLEANFILES = \
$(man_one_DATA) \
- $(man_one_files) \
$(NULL)
if ENABLE_EMOJI_DICT
diff --git a/ui/gtk3/Makefile.am b/ui/gtk3/Makefile.am
index 2a9cabde..5e1a8510 100644
--- a/ui/gtk3/Makefile.am
+++ b/ui/gtk3/Makefile.am
@@ -257,15 +257,12 @@ panelbinding.o: $(srcdir)/panelbinding.c
MAINTAINERCLEANFILES += extension.c panelbinding.c
-man_seven_files = $(man_seven_in_files:.7.in=.7)
-man_seven_DATA =$(man_seven_files:.7=.7.gz)
+man_seven_DATA = $(man_seven_in_files:.7.in=.7)
man_sevendir = $(mandir)/man7
%.7: %.7.in
$(AM_V_GEN) sed \
-e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
mv $@.tmp $@
-%.7.gz: %.7
- $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@
desktop_in_files = \
ibus-ui-emojier.desktop.in \
@@ -293,7 +290,6 @@ CLEANFILES += \
$(desktop_DATA) \
$(desktop_notrans_files) \
$(man_seven_DATA) \
- $(man_seven_files) \
$(NULL)
endif
--
2.40.0
From 03a486c1ec98647e7f8c7dbb70e6e4d3898c9322 Mon Sep 17 00:00:00 2001
From: Emil Velikov <emil.l.velikov@gmail.com>
Date: Sun, 11 Jun 2023 16:16:40 +0900
Subject: [PATCH 2/2] makefile: manage the manpages via AC_CONFIG_FILES()
The AC_CONFIG_FILES macro already known how to handle @VERSION@
substitution, while also ensuring the input files are in the tarball
(EXTRA_DIST) and substituted files are removed on make distclean
(CONFIG_CLEAN_FILES).
BUG=https://github.com/ibus/ibus/pull/2514
---
bus/Makefile.am | 12 +-----------
configure.ac | 6 ++++++
data/dconf/Makefile.am | 12 +-----------
setup/Makefile.am | 9 +--------
tools/Makefile.am | 12 +-----------
ui/gtk3/Makefile.am | 10 +---------
6 files changed, 11 insertions(+), 50 deletions(-)
diff --git a/bus/Makefile.am b/bus/Makefile.am
index d0445d02..99715a15 100644
--- a/bus/Makefile.am
+++ b/bus/Makefile.am
@@ -163,14 +163,9 @@ test_stress_LDADD = \
$(NULL)
EXTRA_DIST = \
- $(man_one_in_files) \
marshalers.list \
$(NULL)
-CLEANFILES = \
- $(man_one_DATA) \
- $(NULL)
-
$(libibus):
$(MAKE) -C $(top_builddir)/src
@@ -179,12 +174,7 @@ test: ibus-daemon
G_DEBUG=fatal_warnings \
$(builddir)/ibus-daemon -v
-man_one_in_files = ibus-daemon.1.in
-man_one_DATA = $(man_one_in_files:.1.in=.1)
+man_one_DATA = ibus-daemon.1
man_onedir = $(mandir)/man1
-%.1: %.1.in
- $(AM_V_GEN) sed \
- -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
- mv $@.tmp $@
-include $(top_srcdir)/git.mk
diff --git a/configure.ac b/configure.ac
index b3eacbcb..73583bab 100644
--- a/configure.ac
+++ b/configure.ac
@@ -831,6 +831,7 @@ bindings/Makefile
bindings/pygobject/Makefile
bindings/vala/Makefile
bus/Makefile
+bus/ibus-daemon.1
bus/services/Makefile
client/Makefile
client/gtk2/Makefile
@@ -847,6 +848,8 @@ data/icons/Makefile
data/its/Makefile
data/keymaps/Makefile
data/dconf/Makefile
+data/dconf/00-upstream-settings.5
+data/dconf/ibus.5
docs/Makefile
docs/reference/Makefile
docs/reference/ibus/ibus-docs.sgml
@@ -858,13 +861,16 @@ ibus/interface/Makefile
m4/Makefile
portal/Makefile
setup/Makefile
+setup/ibus-setup.1
src/Makefile
src/compose/Makefile
src/ibusversion.h
src/tests/Makefile
tools/Makefile
+tools/ibus.1
ui/Makefile
ui/gtk3/Makefile
+ui/gtk3/ibus-emoji.7
util/Makefile
util/IMdkit/Makefile
Makefile
diff --git a/data/dconf/Makefile.am b/data/dconf/Makefile.am
index 2352f770..b0601aa8 100644
--- a/data/dconf/Makefile.am
+++ b/data/dconf/Makefile.am
@@ -37,13 +37,8 @@ dconfdb_DATA = 00-upstream-settings
$(AM_V_GEN) $(srcdir)/make-dconf-override-db.sh > $@ || \
{ rc=$$?; $(RM) -rf $@; exit $$rc; }
-man_5_in_files = 00-upstream-settings.5.in ibus.5.in
-man_5_DATA = $(man_5_in_files:.5.in=.5)
+man_5_DATA = 00-upstream-settings.5 ibus.5
man_5dir = $(mandir)/man5
-%.5: %.5.in
- $(AM_V_GEN) sed \
- -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
- mv $@.tmp $@
install-data-hook:
if test -z "$(DESTDIR)"; then \
@@ -52,16 +47,11 @@ install-data-hook:
EXTRA_DIST = \
$(gsettings_SCHEMAS) \
- $(man_5_in_files) \
make-dconf-override-db.sh \
profile/ibus \
00-upstream-settings \
$(NULL)
-CLEANFILES = \
- $(man_5_DATA) \
- $(NULL)
-
MAINTAINERCLEANFILES = \
00-upstream-settings \
$(NULL)
diff --git a/setup/Makefile.am b/setup/Makefile.am
index b34aa8fc..831f883c 100644
--- a/setup/Makefile.am
+++ b/setup/Makefile.am
@@ -55,24 +55,17 @@ desktopdir = $(datadir)/applications
org.freedesktop.IBus.Setup.desktop: ibus-setup.desktop
$(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@
-man_one_in_files = ibus-setup.1.in
-man_one_DATA = $(man_one_in_files:.1.in=.1)
+man_one_DATA = ibus-setup.1
man_onedir = $(mandir)/man1
-%.1: %.1.in
- $(AM_V_GEN) sed \
- -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
- mv $@.tmp $@
CLEANFILES = \
$(desktop_DATA) \
- $(man_one_DATA) \
*.pyc \
ibus-setup \
$(NULL)
EXTRA_DIST = \
$(desktop_notrans_files) \
- $(man_one_in_files) \
ibus-setup.in \
setup.ui \
$(NULL)
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 0d00abed..daf18f28 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -112,26 +112,16 @@ libibusimmodule_la_LDFLAGS = \
-export-symbols-regex "ibus_.*" \
$(NULL)
-man_one_in_files = ibus.1.in
-man_one_DATA = $(man_one_in_files:.1.in=.1)
+man_one_DATA = ibus.1
man_onedir = $(mandir)/man1
-%.1: %.1.in
- $(AM_V_GEN) sed \
- -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
- mv $@.tmp $@
EXTRA_DIST = \
$(ibus_immodule_vapi) \
$(ibusimmodule_gir) \
- $(man_one_in_files) \
ibus.bash \
IBusIMModule-1.0.metadata \
$(NULL)
-CLEANFILES = \
- $(man_one_DATA) \
- $(NULL)
-
if ENABLE_EMOJI_DICT
if ENABLE_UI
AM_VALAFLAGS += \
diff --git a/ui/gtk3/Makefile.am b/ui/gtk3/Makefile.am
index 5e1a8510..4a6506fe 100644
--- a/ui/gtk3/Makefile.am
+++ b/ui/gtk3/Makefile.am
@@ -147,8 +147,6 @@ emoji_headers = \
ibusemojidialog.h \
$(NULL)
-man_seven_in_files = ibus-emoji.7.in
-
# References:
# libappindicator/src/notification-item.xml
# libappindicator/src/notification-watcher.xml
@@ -156,7 +154,6 @@ man_seven_in_files = ibus-emoji.7.in
# kdelibs/kdeui/knotifications/src/org.kde.StatusNotifierWatcher.xml
EXTRA_DIST = \
$(emoji_headers) \
- $(man_seven_in_files) \
emojierapp.vala \
extension.vala \
gtkextension.xml.in \
@@ -257,12 +254,8 @@ panelbinding.o: $(srcdir)/panelbinding.c
MAINTAINERCLEANFILES += extension.c panelbinding.c
-man_seven_DATA = $(man_seven_in_files:.7.in=.7)
+man_seven_DATA = ibus-emoji.7
man_sevendir = $(mandir)/man7
-%.7: %.7.in
- $(AM_V_GEN) sed \
- -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \
- mv $@.tmp $@
desktop_in_files = \
ibus-ui-emojier.desktop.in \
@@ -289,7 +282,6 @@ org.freedesktop.IBus.Panel.Extension.Gtk3.desktop: ibus-extension-gtk3.desktop
CLEANFILES += \
$(desktop_DATA) \
$(desktop_notrans_files) \
- $(man_seven_DATA) \
$(NULL)
endif
--
2.40.0
From 4831ed595b346f1ab9224b44e571532785ca86c7 Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Sun, 11 Jun 2023 16:25:56 +0900
Subject: [PATCH] setup: Unselect Add button in Select Input Method dialog
After click "More" ListBoxRow cell in the "Select an input method"
dialog, "Add" button is sensitive but clicking "Add" button causes
a SEGV in enginedialog.py:get_selected_engine() because the more cell
has no engine memmber.
BUG=rhbz#2213145
---
setup/enginedialog.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/setup/enginedialog.py b/setup/enginedialog.py
index 470f801c..ba6a4819 100644
--- a/setup/enginedialog.py
+++ b/setup/enginedialog.py
@@ -4,7 +4,7 @@
# ibus - The Input Bus
#
# Copyright (c) 2015 Peng Huang <shawn.p.huang@gmail.com>
-# Copyright (c) 2015-2021 Takao Fujiwara <takao.fujiwara1@gmail.com>
+# Copyright (c) 2015-2023 Takao Fujiwara <takao.fujiwara1@gmail.com>
# Copyright (c) 2013-2015 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or
@@ -145,6 +145,8 @@ class EngineDialog(Gtk.Dialog):
def __row_activated(self, box, row):
if row == self.__more_row:
+ # Undo sensitive Gtk.ResponseType.APPLY button
+ self.__list.unselect_row(row)
self.__show_more()
return
if row.back:
--
2.40.0
From 76f2f4a3aa25b399d65c947d76d61d5ae4723bc7 Mon Sep 17 00:00:00 2001
From: Matt Turner <mattst88@gmail.com>
Date: Sun, 11 Jun 2023 19:59:17 +0900
Subject: [PATCH 1/2] configure: Run autoupdate
Avoids these warnings when running autogen.sh:
configure.ac:67: warning: The macro `AC_GNU_SOURCE' is obsolete.
configure.ac:67: You should run autoupdate.
./lib/autoconf/specific.m4:311: AC_GNU_SOURCE is expanded from...
configure.ac:67: the top level
configure.ac:129: warning: The macro `AC_PROG_CC_STDC' is obsolete.
configure.ac:129: You should run autoupdate.
./lib/autoconf/c.m4:1671: AC_PROG_CC_STDC is expanded from...
configure.ac:129: the top level
configure.ac:139: warning: The macro `AM_DISABLE_STATIC' is obsolete.
configure.ac:139: You should run autoupdate.
m4/ltoptions.m4:260: AM_DISABLE_STATIC is expanded from...
configure.ac:139: the top level
configure.ac:140: warning: The macro `AC_ISC_POSIX' is obsolete.
configure.ac:140: You should run autoupdate.
./lib/autoconf/specific.m4:549: AC_ISC_POSIX is expanded from...
configure.ac:140: the top level
configure.ac:141: warning: The macro `AC_HEADER_STDC' is obsolete.
configure.ac:141: You should run autoupdate.
./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from...
configure.ac:141: the top level
BUG=https://github.com/ibus/ibus/pull/2519
---
configure.ac | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/configure.ac b/configure.ac
index 73583bab..cbdfbd05 100644
--- a/configure.ac
+++ b/configure.ac
@@ -64,7 +64,7 @@ AC_SUBST(VALA_TARGET_GLIB_VERSION)
# Init automake.
AM_INIT_AUTOMAKE([1.11.1 parallel-tests])
AM_MAINTAINER_MODE([enable])
-AC_GNU_SOURCE
+AC_USE_SYSTEM_EXTENSIONS
# Support silent build rules. Disable
# by either passing --disable-silent-rules to configure or passing V=1
@@ -126,7 +126,6 @@ AC_SUBST(DATE_DISPLAY)
# Check for programs.
AC_PROG_CC
AM_PROG_CC_C_O
-AC_PROG_CC_STDC
AM_PROG_VALAC([0.20])
AC_PROG_INSTALL
AC_PROG_MAKE_SET
@@ -136,9 +135,9 @@ AM_GNU_GETTEXT_VERSION([0.19.8])
AM_GNU_GETTEXT([external])
# Define PACKAGE_VERSION_* variables.
-AM_DISABLE_STATIC
-AC_ISC_POSIX
-AC_HEADER_STDC
+AC_DISABLE_STATIC([])
+AC_SEARCH_LIBS([strerror],[cposix])
+
LT_INIT
# Check header filess.
--
2.40.0
From b97e6669ea8127dd50ce49d061edd4ce579bbb42 Mon Sep 17 00:00:00 2001
From: Matt Turner <mattst88@gmail.com>
Date: Sun, 11 Jun 2023 19:59:18 +0900
Subject: [PATCH 2/2] src/ibuscomposetable: Fix unaligned accesses
Fixes: https://github.com/ibus/ibus/commit/19ca1065
BUG=https://github.com/ibus/ibus/issues/2518
---
src/ibuscomposetable.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/ibuscomposetable.c b/src/ibuscomposetable.c
index fc486692..c807c751 100644
--- a/src/ibuscomposetable.c
+++ b/src/ibuscomposetable.c
@@ -732,8 +732,8 @@ compose_data_to_variant (gconstpointer compose_data,
gboolean reverse_endianness,
GError **error)
{
- guint16 *compose_data16 = NULL;
- guint32 *compose_data32 = NULL;
+ guint16 data16;
+ guint32 data32;
guint16 *target_data16 = NULL;
guint32 *target_data32 = NULL;
gsize i, length;
@@ -759,18 +759,20 @@ compose_data_to_variant (gconstpointer compose_data,
"Failed to malloc");
return NULL;
}
- compose_data32 = (guint32*)compose_data;
- for (i = 0; i < length; i++)
- target_data32[i] = GUINT32_SWAP_LE_BE (compose_data32[i]);
+ for (i = 0; i < length; i++) {
+ memcpy(&data32, (char *)compose_data + i * sizeof (data32), sizeof (data32));
+ target_data32[i] = GUINT32_SWAP_LE_BE (data32);
+ }
} else {
if (!(target_data16 = g_new0 (guint16, length))) {
g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED,
"Failed to malloc");
return NULL;
}
- compose_data16 = (guint16*)compose_data;
- for (i = 0; i < length; i++)
- target_data16[i] = GUINT16_SWAP_LE_BE (compose_data16[i]);
+ for (i = 0; i < length; i++) {
+ memcpy(&data16, (char *)compose_data + i * sizeof (data16), sizeof (data16));
+ target_data16[i] = GUINT16_SWAP_LE_BE (data16);
+ }
}
} else {
if (is_32bit)
@@ -1365,8 +1367,9 @@ ibus_compose_table_new_with_list (GList *compose_list,
if (is_32bit) {
for (j = 0; compose_data->values[j]; j++) {
g_assert (v_index_32bit + j < v_size_32bit);
- ibus_compose_seqs_32bit_second[v_index_32bit + j] =
- compose_data->values[j];
+ memcpy(&ibus_compose_seqs_32bit_second[v_index_32bit + j],
+ &compose_data->values[j],
+ sizeof *ibus_compose_seqs_32bit_second);
}
g_assert (m + 1 < (s_size_total - s_size_16bit) * n_index_stride);
ibus_compose_seqs_32bit_first[m++] = j;
--
2.40.0

View File

@ -50,7 +50,7 @@
Name: ibus
Version: 1.5.28
Release: 6%{?dist}
Release: 7%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPL-2.0-or-later
URL: https://github.com/ibus/%name/wiki
@ -559,6 +559,11 @@ dconf update || :
%{_datadir}/installed-tests/ibus
%changelog
* Sun Jun 11 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.28-7
- Delete GZipped man files
- Resolves #2213145 Unselect Add button in Select Input Method dialog in setup
- Fix unaligned accesses in ibuscomposetable
* Fri May 26 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.28-6
- Resolves: #2195895 ibus_input_context_set_cursor_location(): ibus-x11 SIGSEGV