Import from AlmaLinux stable repository
This commit is contained in:
parent
0bfebc3d3f
commit
7d2ac0582c
@ -1 +0,0 @@
|
|||||||
cf4f885d2d41a5c9fb85bd90df46bb67a93f4f07 SOURCES/gjs-1.56.2.tar.xz
|
|
@ -0,0 +1,60 @@
|
|||||||
|
From bc58c3127fc6b1a2c8450b47d4dda52298cf217e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sebastian Keller <skeller@gnome.org>
|
||||||
|
Date: Thu, 16 Mar 2023 22:35:49 +0100
|
||||||
|
Subject: [PATCH] function: Always initialize callback return value
|
||||||
|
|
||||||
|
When callback_closure() exits early, for example due to being called
|
||||||
|
during GC, the return value would not be initialized. This value is
|
||||||
|
often non-zero. If the callback is a source func of an idle or a timeout
|
||||||
|
this would then get interpreted as G_SOURCE_CONTINUE and the same would
|
||||||
|
repeat in the next iteration. If this happens fast enough, this results
|
||||||
|
in the entire process being seemingly frozen while spamming the log with
|
||||||
|
error messages.
|
||||||
|
|
||||||
|
To fix this always initialize the return value to 0 or a comparable
|
||||||
|
neutral value.
|
||||||
|
|
||||||
|
Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1868
|
||||||
|
---
|
||||||
|
gi/function.cpp | 11 ++++++-----
|
||||||
|
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/gi/function.cpp b/gi/function.cpp
|
||||||
|
index ef708f0c..551c1732 100644
|
||||||
|
--- a/gi/function.cpp
|
||||||
|
+++ b/gi/function.cpp
|
||||||
|
@@ -200,6 +200,12 @@ gjs_callback_closure(ffi_cif *cif,
|
||||||
|
g_assert(trampoline);
|
||||||
|
gjs_callback_trampoline_ref(trampoline);
|
||||||
|
|
||||||
|
+ context = gjs_closure_get_context(trampoline->js_function);
|
||||||
|
+
|
||||||
|
+ /* Fill in the result with some hopefully neutral value */
|
||||||
|
+ g_callable_info_load_return_type(trampoline->info, &ret_type);
|
||||||
|
+ gjs_g_argument_init_default (context, &ret_type, (GArgument *) result);
|
||||||
|
+
|
||||||
|
if (G_UNLIKELY(!gjs_closure_is_valid(trampoline->js_function))) {
|
||||||
|
warn_about_illegal_js_callback(trampoline, "during shutdown",
|
||||||
|
"destroying a Clutter actor or GTK widget with ::destroy signal "
|
||||||
|
@@ -208,7 +214,6 @@ gjs_callback_closure(ffi_cif *cif,
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- context = gjs_closure_get_context(trampoline->js_function);
|
||||||
|
GjsContextPrivate* gjs = GjsContextPrivate::from_cx(context);
|
||||||
|
if (G_UNLIKELY(gjs->sweeping())) {
|
||||||
|
warn_about_illegal_js_callback(trampoline, "during garbage collection",
|
||||||
|
@@ -445,10 +450,6 @@ out:
|
||||||
|
g_base_info_get_name(trampoline->info));
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Fill in the result with some hopefully neutral value */
|
||||||
|
- g_callable_info_load_return_type(trampoline->info, &ret_type);
|
||||||
|
- gjs_g_argument_init_default (context, &ret_type, (GArgument *) result);
|
||||||
|
-
|
||||||
|
/* If the callback has a GError** argument and invoking the closure
|
||||||
|
* returned an error, try to make a GError from it */
|
||||||
|
if (can_throw_gerror && rval.isObject()) {
|
||||||
|
--
|
||||||
|
2.40.0
|
||||||
|
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
Name: gjs
|
Name: gjs
|
||||||
Version: 1.56.2
|
Version: 1.56.2
|
||||||
Release: 5%{?dist}
|
Release: 6%{?dist}
|
||||||
Summary: Javascript Bindings for GNOME
|
Summary: Javascript Bindings for GNOME
|
||||||
|
|
||||||
# The following files contain code from Mozilla which
|
# The following files contain code from Mozilla which
|
||||||
@ -18,6 +18,7 @@ Source0: https://download.gnome.org/sources/%{name}/1.56/%{name}-%{version
|
|||||||
|
|
||||||
Patch0: 0001-gi-Include-missing-glib-bits.patch
|
Patch0: 0001-gi-Include-missing-glib-bits.patch
|
||||||
Patch1: fix-undefined-property-warning.patch
|
Patch1: fix-undefined-property-warning.patch
|
||||||
|
Patch2: 0001-function-Always-initialize-callback-return-value.patch
|
||||||
|
|
||||||
BuildRequires: cairo-gobject-devel
|
BuildRequires: cairo-gobject-devel
|
||||||
BuildRequires: chrpath
|
BuildRequires: chrpath
|
||||||
@ -102,6 +103,10 @@ find %{buildroot} -name '*.la' -exec rm -f {} ';'
|
|||||||
%{_datadir}/installed-tests
|
%{_datadir}/installed-tests
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed May 10 2023 Florian Müllner <fmuellner@redhat.com> - 1.56.2-6
|
||||||
|
- Always initialize callback return value
|
||||||
|
Resolves: #2182508
|
||||||
|
|
||||||
* Tue Nov 17 2020 Florian Müllner <fmuellner@redhat.co> - 1.56.2-5
|
* Tue Nov 17 2020 Florian Müllner <fmuellner@redhat.co> - 1.56.2-5
|
||||||
- Fix undefined property warnings
|
- Fix undefined property warnings
|
||||||
Related: #1845660
|
Related: #1845660
|
||||||
|
Loading…
Reference in New Issue
Block a user