Unbreak ubsan developer-build
Clang 3.8's undefined-behavior sanitizer checks that the declared type of the object is a base class of the dynamic type of the object on each access to a member of a class type. It therefore requires the typeinfo for these types, which for polymorphic types is emitted in the TU where the vtable is emitted, too. QDBusConnectionPrivate is a polymorphic non-exported class, so this failed at link-time. Ditto for the other case. Fix by autotest-exporting the classes. Also, where applicable, de-inline the dtors, so the vtable (and typeinfo) are pinned to one TU, and the ctor, just because it's the correct thing to do. Change-Id: I991f81f88d2a48e85d94d9f3ac61473c0b7056d3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
2982d327f7
commit
dbc3d8e15e
@ -107,7 +107,7 @@ public:
|
||||
// QDBusConnectionPrivate holds the DBusConnection and
|
||||
// can have many QDBusConnection objects referring to it
|
||||
|
||||
class QDBusConnectionPrivate: public QObject
|
||||
class Q_AUTOTEST_EXPORT QDBusConnectionPrivate: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
@ -55,6 +55,11 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
typedef QSqlTableModelSql Sql;
|
||||
|
||||
QSqlTableModelPrivate::~QSqlTableModelPrivate()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*! \internal
|
||||
Populates our record with values.
|
||||
*/
|
||||
|
@ -58,7 +58,7 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QSqlTableModelPrivate: public QSqlQueryModelPrivate
|
||||
class Q_AUTOTEST_EXPORT QSqlTableModelPrivate: public QSqlQueryModelPrivate
|
||||
{
|
||||
Q_DECLARE_PUBLIC(QSqlTableModel)
|
||||
|
||||
@ -69,6 +69,8 @@ public:
|
||||
strategy(QSqlTableModel::OnRowChange),
|
||||
busyInsertingRows(false)
|
||||
{}
|
||||
~QSqlTableModelPrivate();
|
||||
|
||||
void clear();
|
||||
virtual void clearCache();
|
||||
QSqlRecord record(const QVector<QVariant> &values) const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user