From dfdebc849400be43396b6600ac4c910e36869989 Mon Sep 17 00:00:00 2001 From: Sergey Belyashov Date: Fri, 26 Sep 2014 16:00:39 +0400 Subject: Fix segfault related to dynamic udev loading Problem was caused by conflict of libudev symbols and function pointers declared in qtudev_p.h. Task-number: QTBUG-40113 Change-Id: I599575e8a1b9ffe32295331d46d991422975f773 Reviewed-by: Denis Shienkov --- src/serialport/qserialportinfo_unix.cpp | 7 +------ src/serialport/qtudev_p.h | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/serialport/qserialportinfo_unix.cpp b/src/serialport/qserialportinfo_unix.cpp index 9ff4431..0405a41 100644 --- a/src/serialport/qserialportinfo_unix.cpp +++ b/src/serialport/qserialportinfo_unix.cpp @@ -360,12 +360,7 @@ QList availablePortsByUdev() QList QSerialPortInfo::availablePorts() { - QList serialPortInfoList; - // TODO: Remove this condition once the udev runtime symbol resolution crash - // is fixed for Qt 4. -#if defined(LINK_LIBUDEV) || (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) - serialPortInfoList = availablePortsByUdev(); -#endif + QList serialPortInfoList = availablePortsByUdev(); #ifdef Q_OS_LINUX if (serialPortInfoList.isEmpty()) diff --git a/src/serialport/qtudev_p.h b/src/serialport/qtudev_p.h index 09940ab..bd9e74d 100644 --- a/src/serialport/qtudev_p.h +++ b/src/serialport/qtudev_p.h @@ -65,7 +65,7 @@ extern "C" #define GENERATE_SYMBOL_VARIABLE(returnType, symbolName, ...) \ typedef returnType (*fp_##symbolName)(__VA_ARGS__); \ - fp_##symbolName symbolName; + static fp_##symbolName symbolName; #define RESOLVE_SYMBOL(symbolName) \ symbolName = (fp_##symbolName)resolveSymbol(udevLibrary, #symbolName); \ -- cgit v1.2.1