Permit loading plugins built with future major Qt releases (4.x)
authorModestas Vainius <modax@debian.org>
Tue, 22 Aug 2023 13:42:24 +0000 (14:42 +0100)
committerRoberto C. Sánchez <roberto@debian.org>
Tue, 22 Aug 2023 13:42:24 +0000 (14:42 +0100)
Origin: vendor
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=586831

This check is too paranoid for us because it prevents from using symbol files
in full potential. Fine-grained package level dependencies should ensure that
the required version of the Qt Library is installed which might not necessarily
be the latest Qt 4.x the plugin was built against because the plugin actually
did not use any of new symbols in the Qt Library.

However, removal of this check might still increase likelihood of crashes when:

1) loading a new incompatible version of plugin into a running process still
using an old Qt Library. This might happen right after upgrade;

2) user tries to load incompatible non-packaged plugin;

but it's an acceptable compromise. Here we trade more bullet proof protection
from rare user faults or weird system misconfigurations for more flexibility,
installability and expand of forward binary compatibility beyond the same Qt
4.x whenever possible.

Gbp-Pq: Name 23_permit_plugins_built_with_future_qt.diff

src/corelib/plugin/qlibrary.cpp

index da80c13555d52ca0c6c904cebffe8ed1bc3a7da1..2741905026ef5e945d6735344b957c134e7521bd 100644 (file)
@@ -834,7 +834,7 @@ bool QLibraryPrivate::isPlugin(QSettings *settings)
 
     pluginState = IsNotAPlugin; // be pessimistic
 
-    if ((qt_version & 0x00ff00) > (QT_VERSION & 0x00ff00) || (qt_version & 0xff0000) != (QT_VERSION & 0xff0000)) {
+    if ((qt_version & 0xff0000) != (QT_VERSION & 0xff0000)) {
         if (qt_debug_component()) {
             qWarning("In %s:\n"
                  "  Plugin uses incompatible Qt library (%d.%d.%d) [%s]",