[SCM] Qt 4 packaging branch, master, updated. debian/4.7.3-5-3-g799bf77

Pino Toscano pino at alioth.debian.org
Tue Aug 9 14:47:55 UTC 2011


The following commit has been merged in the master branch:
commit de54e74e8d5382e65d905f6d8ee301b4e5a5506b
Author: Pino Toscano <pino at debian.org>
Date:   Tue Aug 9 11:17:33 2011 +0200

    ddd patch Check-if-the-interpolators-have-already-been-deleted.patch (#635724)
---
 debian/changelog                                   |    4 ++
 ...e-interpolators-have-already-been-deleted.patch |   44 ++++++++++++++++++++
 debian/patches/series                              |    1 +
 3 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 6adf9fe..979dcc5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,9 @@
 qt4-x11 (4:4.7.3-6~0) UNRELEASED; urgency=low
 
+  [ Pino Toscano ]
+  * Add patch Check-if-the-interpolators-have-already-been-deleted.patch
+    to fix QVariantAnimation::registerInterpolator() crash during global dtors
+    run. (Closes: #635724)
 
  -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org>  Tue, 09 Aug 2011 11:01:35 +0200
 
diff --git a/debian/patches/Check-if-the-interpolators-have-already-been-deleted.patch b/debian/patches/Check-if-the-interpolators-have-already-been-deleted.patch
new file mode 100644
index 0000000..1e9c9ea
--- /dev/null
+++ b/debian/patches/Check-if-the-interpolators-have-already-been-deleted.patch
@@ -0,0 +1,44 @@
+From 861333040c252fa0f53894b604f7cb768c085281 Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira at nokia.com>
+Date: Wed, 26 Jan 2011 14:06:11 +0100
+Subject: [PATCH] Check if the interpolators have already been deleted.
+
+During application destruction, the order in which static destructors
+is run is undetermined. So avoid a null-pointer dereference.
+
+Task-number: QTBUG-16855
+Reviewed-by: Robin Burchell
+Patch by task reporter
+---
+ src/corelib/animation/qvariantanimation.cpp |   13 +++++++++----
+ 1 files changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp
+index 212e85d..c76cb89 100644
+--- a/src/corelib/animation/qvariantanimation.cpp
++++ b/src/corelib/animation/qvariantanimation.cpp
+@@ -431,12 +431,17 @@ void QVariantAnimation::registerInterpolator(QVariantAnimation::Interpolator fun
+ {
+     // will override any existing interpolators
+     QInterpolatorVector *interpolators = registeredInterpolators();
++    // When built on solaris with GCC, the destructors can be called
++    // in such an order that we get here with interpolators == NULL,
++    // to continue causes the app to crash on exit with a SEGV
++    if (interpolators) {
+ #ifndef QT_NO_THREAD
+-    QMutexLocker locker(QMutexPool::globalInstanceGet(interpolators));
++        QMutexLocker locker(QMutexPool::globalInstanceGet(interpolators));
+ #endif
+-    if (int(interpolationType) >= interpolators->count())
+-        interpolators->resize(int(interpolationType) + 1);
+-    interpolators->replace(interpolationType, func);
++        if (int(interpolationType) >= interpolators->count())
++            interpolators->resize(int(interpolationType) + 1);
++        interpolators->replace(interpolationType, func);
++    }
+ }
+ 
+ 
+-- 
+1.7.5.4
+
diff --git a/debian/patches/series b/debian/patches/series
index 69c5f9f..479fb1b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -13,6 +13,7 @@ Prevent_recursion_when_creating_window_surface.patch
 Fixed_bug_in_X11_backend_when_creating_translucent_windows.patch
 Take_Xft.hintstyle_by_default_to_match_the_behavior_of_GTK+.patch
 Fix_fontconfig_usage_in_X11_font_database.patch
+Check-if-the-interpolators-have-already-been-deleted.patch
 
 # qt-copy patches
 0195-compositing-properties.diff

-- 
Qt 4 packaging



More information about the pkg-kde-commits mailing list