Hello community,

here is the log from the commit of package libqt5-qtbase for openSUSE:Factory 
checked in at 2015-05-11 19:33:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtbase (Old)
 and      /work/SRC/openSUSE:Factory/.libqt5-qtbase.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libqt5-qtbase"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt5-qtbase/libqt5-qtbase.changes      
2015-04-22 01:12:16.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libqt5-qtbase.new/libqt5-qtbase.changes 
2015-05-11 19:33:05.000000000 +0200
@@ -1,0 +2,18 @@
+Tue May  5 01:05:55 UTC 2015 - [email protected]
+
+- Added patches from upstream:
+  Fix-upload-corruptions-when-server-closes-connection.patch and
+  Fixed-a-deadlock-when-the-lock-file-is-corrupted.patch (qtbug#44771)
+
+-------------------------------------------------------------------
+Sat Apr 25 01:30:11 UTC 2015 - [email protected]
+
+- Fixup previous change to also handle arguments in specs using %qmake5
+- Also add QMAKE_LFLAGS to the macro
+
+-------------------------------------------------------------------
+Fri Apr 24 07:41:31 UTC 2015 - [email protected]
+
+- Added QMAKE_CXXFLAGS and QMAKE_CFLAGS to macro %qmake5.
+
+-------------------------------------------------------------------

New:
----
  Fix-upload-corruptions-when-server-closes-connection.patch
  Fixed-a-deadlock-when-the-lock-file-is-corrupted.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libqt5-qtbase.spec ++++++
--- /var/tmp/diff_new_pack.9fFbb0/_old  2015-05-11 19:33:06.000000000 +0200
+++ /var/tmp/diff_new_pack.9fFbb0/_new  2015-05-11 19:33:06.000000000 +0200
@@ -77,6 +77,10 @@
 Patch2008:      0002-Speed-up-application-startup-on-X11.patch
 # PATCH-FIX-UPSTREAM Fix-regression-in-compose-table-parsing.patch
 Patch2009:      Fix-regression-in-compose-table-parsing.patch
+# PATCH-FIX-UPSTREAM Fix-upload-corruptions-when-server-closes-connection.patch
+Patch2010:      Fix-upload-corruptions-when-server-closes-connection.patch
+# PATCH-FIX-UPSTREAM Fixed-a-deadlock-when-the-lock-file-is-corrupted.patch
+Patch2011:      Fixed-a-deadlock-when-the-lock-file-is-corrupted.patch
 BuildRequires:  alsa-devel
 BuildRequires:  cups-devel
 BuildRequires:  gcc-c++
@@ -171,6 +175,8 @@
 %patch2007 -p1
 %patch2008 -p1
 %patch2009 -p1
+%patch2010 -p1
+%patch2011 -p1
 
 # be sure not to use them
 rm -r src/3rdparty/{libjpeg,freetype,libpng,zlib}

++++++ Fix-upload-corruptions-when-server-closes-connection.patch ++++++
++++ 690 lines (skipped)

++++++ Fixed-a-deadlock-when-the-lock-file-is-corrupted.patch ++++++
>From f58e882b7594c59b6050d3c87562fcf836d10f60 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <[email protected]>
Date: Tue, 14 Apr 2015 10:58:26 +0200
Subject: QLockFile: fix deadlock when the lock file is corrupted

[ChangeLog][QtCore][QLockFile] Fixed a deadlock when the lock file
is corrupted.

Task-number: QTBUG-44771
Change-Id: Ic490b09d70ff1cc1733b64949889a73720b2d0f3
Reviewed-by: David Faure <[email protected]>
---
 src/corelib/io/qlockfile_unix.cpp                 | 10 +++++-----
 src/corelib/io/qlockfile_win.cpp                  | 22 +++++++++++-----------
 tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp | 17 +++++++++++++++++
 3 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/src/corelib/io/qlockfile_unix.cpp 
b/src/corelib/io/qlockfile_unix.cpp
index bf1015a..dc9f8f7 100644
--- a/src/corelib/io/qlockfile_unix.cpp
+++ b/src/corelib/io/qlockfile_unix.cpp
@@ -181,11 +181,11 @@ bool QLockFilePrivate::isApparentlyStale() const
 {
     qint64 pid;
     QString hostname, appname;
-    if (!getLockInfo(&pid, &hostname, &appname))
-        return false;
-    if (hostname.isEmpty() || hostname == 
QString::fromLocal8Bit(localHostName())) {
-        if (::kill(pid, 0) == -1 && errno == ESRCH)
-            return true; // PID doesn't exist anymore
+    if (getLockInfo(&pid, &hostname, &appname)) {
+        if (hostname.isEmpty() || hostname == 
QString::fromLocal8Bit(localHostName())) {
+            if (::kill(pid, 0) == -1 && errno == ESRCH)
+                return true; // PID doesn't exist anymore
+        }
     }
     const qint64 age = 
QFileInfo(fileName).lastModified().msecsTo(QDateTime::currentDateTime());
     return staleLockTime > 0 && age > staleLockTime;
diff --git a/src/corelib/io/qlockfile_win.cpp b/src/corelib/io/qlockfile_win.cpp
index f9f2909..3587c7b 100644
--- a/src/corelib/io/qlockfile_win.cpp
+++ b/src/corelib/io/qlockfile_win.cpp
@@ -115,21 +115,21 @@ bool QLockFilePrivate::isApparentlyStale() const
 {
     qint64 pid;
     QString hostname, appname;
-    if (!getLockInfo(&pid, &hostname, &appname))
-        return false;
 
     // On WinRT there seems to be no way of obtaining information about other
     // processes due to sandboxing
 #ifndef Q_OS_WINRT
-    if (hostname == QString::fromLocal8Bit(localHostName())) {
-        HANDLE procHandle = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, 
pid);
-        if (!procHandle)
-            return true;
-        // We got a handle but check if process is still alive
-        DWORD dwR = ::WaitForSingleObject(procHandle, 0);
-        ::CloseHandle(procHandle);
-        if (dwR == WAIT_TIMEOUT)
-            return true;
+    if (getLockInfo(&pid, &hostname, &appname)) {
+        if (hostname == QString::fromLocal8Bit(localHostName())) {
+            HANDLE procHandle = ::OpenProcess(PROCESS_QUERY_INFORMATION, 
FALSE, pid);
+            if (!procHandle)
+                return true;
+            // We got a handle but check if process is still alive
+            DWORD dwR = ::WaitForSingleObject(procHandle, 0);
+            ::CloseHandle(procHandle);
+            if (dwR == WAIT_TIMEOUT)
+                return true;
+        }
     }
 #endif // !Q_OS_WINRT
     const qint64 age = 
QFileInfo(fileName).lastModified().msecsTo(QDateTime::currentDateTime());
diff --git a/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp 
b/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp
index 77bef94..12bea67 100644
--- a/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp
+++ b/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp
@@ -58,6 +58,7 @@ private slots:
     void staleLongLockFromBusyProcess();
     void staleLockRace();
     void noPermissions();
+    void corruptedLockFile();
 
 public:
     QString m_helperApp;
@@ -415,5 +416,21 @@ void tst_QLockFile::noPermissions()
     QCOMPARE(int(lockFile.error()), int(QLockFile::PermissionError));
 }
 
+void tst_QLockFile::corruptedLockFile()
+{
+    const QString fileName = dir.path() + "/corruptedLockFile";
+
+    {
+        // Create a empty file. Typically the result of a computer crash or 
hard disk full.
+        QFile file(fileName);
+        QVERIFY(file.open(QFile::WriteOnly));
+    }
+
+    QLockFile secondLock(fileName);
+    secondLock.setStaleLockTime(100);
+    QVERIFY(secondLock.tryLock(10000));
+    QCOMPARE(int(secondLock.error()), int(QLockFile::NoError));
+}
+
 QTEST_MAIN(tst_QLockFile)
 #include "tst_qlockfile.moc"
-- 
cgit v0.11.0

++++++ macros.qt5 ++++++
--- /var/tmp/diff_new_pack.9fFbb0/_old  2015-05-11 19:33:07.000000000 +0200
+++ /var/tmp/diff_new_pack.9fFbb0/_new  2015-05-11 19:33:07.000000000 +0200
@@ -15,10 +15,10 @@
 %_libqt5_qmake %{_libqt5_bindir}/qmake
 
 %qmake5 \
-  export PATH=%{_libqt5_bindir}:$PATH ; \
-  export CXXFLAGS="$CXXFLAGS %{optflags} -DOPENSSL_LOAD_CONF" ; \
-  export CFLAGS="$CFLAGS %{optflags} -DOPENSSL_LOAD_CONF" ; \
-  %_libqt5_qmake
+  %_libqt5_qmake \\\
+  QMAKE_CXXFLAGS="$CXXFLAGS %{optflags} -DOPENSSL_LOAD_CONF" \\\
+  QMAKE_CFLAGS="$CFLAGS %{optflags} -DOPENSSL_LOAD_CONF" \\\
+  QMAKE_LFLAGS="$LDFLAGS -Wl,--as-needed -Wl,--no-undefined"
 
 %make_jobs \
   %{__make} %{?_smp_mflags} VERBOSE=1


Reply via email to