Merged update from upstream sources
This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/gjs.git#3a731806c1e66299e9bb269222f2cfa8441b6904
This commit is contained in:
parent
79715dd108
commit
e344bd31be
1
.gitignore
vendored
1
.gitignore
vendored
@ -117,3 +117,4 @@ gjs-0.7.1.tar.gz
|
||||
/gjs-1.67.1.tar.xz
|
||||
/gjs-1.67.2.tar.xz
|
||||
/gjs-1.67.3.tar.xz
|
||||
/gjs-1.68.0.tar.xz
|
||||
|
||||
70
588.patch
70
588.patch
@ -1,70 +0,0 @@
|
||||
From c0003eb5ad4c4b0421d723da3d1ff11991f70fb5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
||||
Date: Fri, 19 Mar 2021 16:46:42 +0100
|
||||
Subject: [PATCH] object: Ignore toggle notifications after disposition
|
||||
|
||||
As per commit d37d6604 we are not removing a toggle reference on
|
||||
disposed objects, however it may happen that a disposed object (but not
|
||||
yet finalized) is still using the toggle references while we're releasing
|
||||
it, and in such case we must always remove the toggle ref, otherwise
|
||||
GObject (that doesn't remove toggle notifications on disposition) will
|
||||
notify us after that the wrapper has been finalized, causing a crash
|
||||
because at that point the GObject is still very well alive (and so
|
||||
its qdata) and so when we'll try to get the gjs private data from it,
|
||||
(namely the JS object wrapper instance) we'll end up accessing freed
|
||||
memory.
|
||||
|
||||
So, on weak notify callback (that we get during disposition, when the
|
||||
object memory is still valid like its toggle notifications) remove the
|
||||
toggle reference that we set and consequently toggle down the JSObject
|
||||
wrapper, unrooting it so that the garbage collector can pick it (this may
|
||||
also make it a bit more reactive, without waiting for the last reference
|
||||
being removed if disposition happens as consequence of a run_dispose()
|
||||
call).
|
||||
|
||||
We keep the m_uses_toggle_ref set though to avoid adding another one,
|
||||
but at this point we also have to check whether the object is also
|
||||
disposed before considering the toggle ref active, and per this in such
|
||||
case we've to only release (steal) the m_ptr when releasing the native
|
||||
object not to access to potentially finalized data.
|
||||
|
||||
Fixes: #387
|
||||
---
|
||||
gi/object.cpp | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gi/object.cpp b/gi/object.cpp
|
||||
index 68410514..598e6bb0 100644
|
||||
--- a/gi/object.cpp
|
||||
+++ b/gi/object.cpp
|
||||
@@ -1082,10 +1082,18 @@ static void wrapped_gobj_dispose_notify(
|
||||
where_the_object_was);
|
||||
}
|
||||
|
||||
+static void wrapped_gobj_toggle_notify(void*, GObject* gobj,
|
||||
+ gboolean is_last_ref);
|
||||
+
|
||||
void
|
||||
ObjectInstance::gobj_dispose_notify(void)
|
||||
{
|
||||
m_gobj_disposed = true;
|
||||
+
|
||||
+ if (m_uses_toggle_ref) {
|
||||
+ g_object_remove_toggle_ref(m_ptr, wrapped_gobj_toggle_notify, nullptr);
|
||||
+ wrapped_gobj_toggle_notify(nullptr, m_ptr, TRUE);
|
||||
+ }
|
||||
}
|
||||
|
||||
void ObjectInstance::iterate_wrapped_gobjects(
|
||||
@@ -1297,7 +1305,7 @@ void
|
||||
ObjectInstance::release_native_object(void)
|
||||
{
|
||||
discard_wrapper();
|
||||
- if (m_gobj_disposed)
|
||||
+ if (m_uses_toggle_ref && m_gobj_disposed)
|
||||
m_ptr.release();
|
||||
else if (m_uses_toggle_ref)
|
||||
g_object_remove_toggle_ref(m_ptr.release(), wrapped_gobj_toggle_notify,
|
||||
--
|
||||
GitLab
|
||||
|
||||
31
gjs.spec
31
gjs.spec
@ -1,11 +1,10 @@
|
||||
%global glib2_version 2.58.0
|
||||
%global gobject_introspection_version 1.61.2
|
||||
%global gtk3_version 3.20
|
||||
%global glib2_version 2.66.0
|
||||
%global gobject_introspection_version 1.66.0
|
||||
%global mozjs78_version 78.8.0-1
|
||||
|
||||
Name: gjs
|
||||
Version: 1.67.3
|
||||
Release: 3%{?dist}
|
||||
Version: 1.68.0
|
||||
Release: 1%{?dist}
|
||||
Summary: Javascript Bindings for GNOME
|
||||
|
||||
# The following files contain code from Mozilla which
|
||||
@ -14,13 +13,7 @@ Summary: Javascript Bindings for GNOME
|
||||
# Stack printer (gjs/stack.c)
|
||||
License: MIT and (MPLv1.1 or GPLv2+ or LGPLv2+)
|
||||
URL: https://wiki.gnome.org/Projects/Gjs
|
||||
Source0: https://download.gnome.org/sources/%{name}/1.67/%{name}-%{version}.tar.xz
|
||||
|
||||
# Fix a frequent crash on unlock:
|
||||
# https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/588
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1940171
|
||||
# https://gitlab.gnome.org/GNOME/gjs/-/issues/387
|
||||
Patch0: 588.patch
|
||||
Source0: https://download.gnome.org/sources/%{name}/1.68/%{name}-%{version}.tar.xz
|
||||
|
||||
BuildRequires: cairo-gobject-devel
|
||||
BuildRequires: dbus-daemon
|
||||
@ -30,7 +23,8 @@ BuildRequires: meson
|
||||
BuildRequires: gettext
|
||||
BuildRequires: glib2-devel >= %{glib2_version}
|
||||
BuildRequires: gobject-introspection-devel >= %{gobject_introspection_version}
|
||||
BuildRequires: gtk3-devel >= %{gtk3_version}
|
||||
BuildRequires: gtk3-devel
|
||||
BuildRequires: gtk4-devel
|
||||
BuildRequires: mozjs78-devel >= %{mozjs78_version}
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: readline-devel
|
||||
@ -41,7 +35,6 @@ BuildRequires: xorg-x11-server-Xvfb
|
||||
|
||||
Requires: glib2%{?_isa} >= %{glib2_version}
|
||||
Requires: gobject-introspection%{?_isa} >= %{gobject_introspection_version}
|
||||
Requires: gtk3%{?_isa} >= %{gtk3_version}
|
||||
Requires: mozjs78%{?_isa} >= %{mozjs78_version}
|
||||
|
||||
# Filter provides for private libraries
|
||||
@ -85,14 +78,14 @@ the functionality of the installed gjs package.
|
||||
%doc NEWS README.md
|
||||
%{_bindir}/gjs
|
||||
%{_bindir}/gjs-console
|
||||
%{_libdir}/*.so.*
|
||||
%{_libdir}/gjs
|
||||
%{_libdir}/gjs/
|
||||
%{_libdir}/libgjs.so.0*
|
||||
|
||||
%files devel
|
||||
%doc examples/*
|
||||
%{_includedir}/gjs-1.0
|
||||
%{_libdir}/pkgconfig/gjs-1.0.pc
|
||||
%{_libdir}/*.so
|
||||
%{_libdir}/libgjs.so
|
||||
%dir %{_datadir}/gjs-1.0
|
||||
%{_datadir}/gjs-1.0/lsan/
|
||||
%{_datadir}/gjs-1.0/valgrind/
|
||||
@ -103,6 +96,10 @@ the functionality of the installed gjs package.
|
||||
%{_datadir}/installed-tests/
|
||||
|
||||
%changelog
|
||||
* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 1.68.0-1
|
||||
- Update to 1.68.0
|
||||
- Tighten soname globs
|
||||
|
||||
* Fri Mar 19 2021 Adam Williamson <awilliam@redhat.com> - 1.67.3-3
|
||||
- Replace MR #585 reversion with MR #588, hopefully correct fix
|
||||
|
||||
|
||||
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (gjs-1.67.3.tar.xz) = 9bd6d58e2322cb7354cf29c7327127276f947f514c80b10831f8f8b36854b7b34da811eff26d41fa7e74e42421df0ffab3a0e6896eb73cca456235c3f2dd1499
|
||||
SHA512 (gjs-1.68.0.tar.xz) = 65278ca345f2c786995bed7755dd86403b469eb6cceaa6db57dbd4af212025a3b1f01b7387f45dc9abc23d47ba2f39c5ab8a90ec95b1934f1471a68a06f0d82d
|
||||
|
||||
Loading…
Reference in New Issue
Block a user