From 71ca09a07d1b5adf3eeefd3790250481781ba166 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Fri, 1 Jul 2016 01:44:05 +0200 Subject: Fix -Werror=duplicated-cond MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This bit of error handling is actually not checking what was originally intended - doing manual pluralization of the error message. Fix it to at least compile with -Werror (gcc 6.1.1). parser/qmaintainingreader_tpl_p.h:204:26: error: duplicated ‘if’ condition [-Werror=duplicated-cond] Change-Id: Ia81ad3c8c1393d08da0a229c4625504faf56c184 Reviewed-by: Thiago Macieira --- src/xmlpatterns/parser/qmaintainingreader_tpl_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xmlpatterns/parser/qmaintainingreader_tpl_p.h b/src/xmlpatterns/parser/qmaintainingreader_tpl_p.h index e2c87cd..f650f2d 100644 --- a/src/xmlpatterns/parser/qmaintainingreader_tpl_p.h +++ b/src/xmlpatterns/parser/qmaintainingreader_tpl_p.h @@ -195,7 +195,7 @@ void MaintainingReader::validateElement(const Looku formatKeyword(name()), allowed.first()); } - else if(totalCount == 1) + else if(totalCount == 2) { /* Note, allowed has already had formatKeyword() applied. */ translationString = QtXmlPatterns::tr("Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes.") -- cgit v1.2.1 From d91d3536eb82075aec25f3772c4209e15b7b3060 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 7 Jul 2016 10:57:03 +0200 Subject: Unbreak ubsan developer-build GCC'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. QtPatternist::AtomicValue is a polymorphic non- exported class, so this failed at link-time. Ditto for the other cases. Fix by autotest-exporting the classes. Also, where applicable, de-inline the dtors, so the vtable (and typeinfo) are pinned to one TU. Change-Id: I5c47be779a3833433a7108a79a57d61a93ab5494 Reviewed-by: Thiago Macieira --- src/xmlpatterns/data/qitem_p.h | 3 +-- src/xmlpatterns/expr/qgeneralcomparison.cpp | 5 +++++ src/xmlpatterns/expr/qgeneralcomparison_p.h | 5 +++-- src/xmlpatterns/expr/qnamespaceconstructor.cpp | 5 +++++ src/xmlpatterns/expr/qnamespaceconstructor_p.h | 3 ++- src/xmlpatterns/expr/qpath.cpp | 5 +++++ src/xmlpatterns/expr/qpath_p.h | 3 ++- src/xmlpatterns/expr/qsinglecontainer.cpp | 5 +++++ src/xmlpatterns/expr/qsinglecontainer_p.h | 4 +++- src/xmlpatterns/expr/qtemplate.cpp | 5 +++++ src/xmlpatterns/expr/qtemplate_p.h | 4 ++-- src/xmlpatterns/expr/qvaluecomparison.cpp | 5 +++++ src/xmlpatterns/expr/qvaluecomparison_p.h | 5 +++-- src/xmlpatterns/expr/qvariablereference.cpp | 5 +++++ src/xmlpatterns/expr/qvariablereference_p.h | 3 ++- src/xmlpatterns/functions/qfunctionfactory_p.h | 2 +- src/xmlpatterns/type/qitemtype_p.h | 2 +- src/xmlpatterns/type/qsequencetype_p.h | 2 +- 18 files changed, 56 insertions(+), 15 deletions(-) diff --git a/src/xmlpatterns/data/qitem_p.h b/src/xmlpatterns/data/qitem_p.h index c89add1..c5a168d 100644 --- a/src/xmlpatterns/data/qitem_p.h +++ b/src/xmlpatterns/data/qitem_p.h @@ -105,8 +105,7 @@ namespace QPatternist * @ingroup Patternist_xdm * @author Frans Englich */ - class AtomicValue : public QSharedData - , public CppCastingHelper + class Q_AUTOTEST_EXPORT AtomicValue : public QSharedData, public CppCastingHelper { public: virtual ~AtomicValue(); diff --git a/src/xmlpatterns/expr/qgeneralcomparison.cpp b/src/xmlpatterns/expr/qgeneralcomparison.cpp index d11b130..1c2ca4c 100644 --- a/src/xmlpatterns/expr/qgeneralcomparison.cpp +++ b/src/xmlpatterns/expr/qgeneralcomparison.cpp @@ -56,6 +56,11 @@ GeneralComparison::GeneralComparison(const Expression::Ptr &op1, { } +/*! \internal */ +GeneralComparison::~GeneralComparison() +{ +} + bool GeneralComparison::generalCompare(const Item &op1, const Item &op2, const DynamicContext::Ptr &context) const diff --git a/src/xmlpatterns/expr/qgeneralcomparison_p.h b/src/xmlpatterns/expr/qgeneralcomparison_p.h index f4bbed3..6a66fa9 100644 --- a/src/xmlpatterns/expr/qgeneralcomparison_p.h +++ b/src/xmlpatterns/expr/qgeneralcomparison_p.h @@ -64,8 +64,8 @@ namespace QPatternist * @author Frans Englich * @ingroup Patternist_expressions */ - class GeneralComparison : public PairContainer, - public ComparisonPlatform { @@ -74,6 +74,7 @@ namespace QPatternist const AtomicComparator::Operator op, const Expression::Ptr &op2, const bool isBackwardsCompat = false); + ~GeneralComparison(); virtual bool evaluateEBV(const DynamicContext::Ptr &) const; virtual Expression::Ptr typeCheck(const StaticContext::Ptr &context, diff --git a/src/xmlpatterns/expr/qnamespaceconstructor.cpp b/src/xmlpatterns/expr/qnamespaceconstructor.cpp index b9ed98b..882f9c0 100644 --- a/src/xmlpatterns/expr/qnamespaceconstructor.cpp +++ b/src/xmlpatterns/expr/qnamespaceconstructor.cpp @@ -44,6 +44,11 @@ NamespaceConstructor::NamespaceConstructor(const QXmlName nb) : m_binding(nb) Q_ASSERT(!m_binding.isNull()); } +/*! \internal */ +NamespaceConstructor::~NamespaceConstructor() +{ +} + void NamespaceConstructor::evaluateToSequenceReceiver(const DynamicContext::Ptr &context) const { context->outputReceiver()->namespaceBinding(m_binding); diff --git a/src/xmlpatterns/expr/qnamespaceconstructor_p.h b/src/xmlpatterns/expr/qnamespaceconstructor_p.h index 1ac1b5d..6a025a1 100644 --- a/src/xmlpatterns/expr/qnamespaceconstructor_p.h +++ b/src/xmlpatterns/expr/qnamespaceconstructor_p.h @@ -57,10 +57,11 @@ namespace QPatternist * @author Frans Englich * @ingroup Patternist_expressions */ - class NamespaceConstructor : public EmptyContainer + class Q_AUTOTEST_EXPORT NamespaceConstructor : public EmptyContainer { public: NamespaceConstructor(const QXmlName nb); + ~NamespaceConstructor(); virtual void evaluateToSequenceReceiver(const DynamicContext::Ptr &context) const; diff --git a/src/xmlpatterns/expr/qpath.cpp b/src/xmlpatterns/expr/qpath.cpp index 4d1e42c..0128cf3 100644 --- a/src/xmlpatterns/expr/qpath.cpp +++ b/src/xmlpatterns/expr/qpath.cpp @@ -55,6 +55,11 @@ Path::Path(const Expression::Ptr &operand1, { } +/*! \internal */ +Path::~Path() +{ +} + Item::Iterator::Ptr Path::mapToSequence(const Item &item, const DynamicContext::Ptr &context) const { diff --git a/src/xmlpatterns/expr/qpath_p.h b/src/xmlpatterns/expr/qpath_p.h index 687fafb..51b5728 100644 --- a/src/xmlpatterns/expr/qpath_p.h +++ b/src/xmlpatterns/expr/qpath_p.h @@ -59,7 +59,7 @@ namespace QPatternist * @author Frans Englich * @ingroup Patternist_expressions */ - class Path : public PairContainer + class Q_AUTOTEST_EXPORT Path : public PairContainer { public: enum Kind @@ -88,6 +88,7 @@ namespace QPatternist Path(const Expression::Ptr &operand1, const Expression::Ptr &operand2, const Kind kind = RegularPath); + ~Path(); virtual Item::Iterator::Ptr evaluateSequence(const DynamicContext::Ptr &context) const; virtual Item evaluateSingleton(const DynamicContext::Ptr &context) const; diff --git a/src/xmlpatterns/expr/qsinglecontainer.cpp b/src/xmlpatterns/expr/qsinglecontainer.cpp index c973313..bf544ab 100644 --- a/src/xmlpatterns/expr/qsinglecontainer.cpp +++ b/src/xmlpatterns/expr/qsinglecontainer.cpp @@ -45,6 +45,11 @@ SingleContainer::SingleContainer(const Expression::Ptr &operand) : m_operand(ope Q_ASSERT(operand); } +/*! \internal */ +SingleContainer::~SingleContainer() +{ +} + Expression::List SingleContainer::operands() const { Expression::List list; diff --git a/src/xmlpatterns/expr/qsinglecontainer_p.h b/src/xmlpatterns/expr/qsinglecontainer_p.h index baf061c..3dbfb80 100644 --- a/src/xmlpatterns/expr/qsinglecontainer_p.h +++ b/src/xmlpatterns/expr/qsinglecontainer_p.h @@ -56,9 +56,11 @@ namespace QPatternist * @author Frans Englich * @ingroup Patternist_expressions */ - class SingleContainer : public Expression + class Q_AUTOTEST_EXPORT SingleContainer : public Expression { public: + ~SingleContainer(); + virtual Expression::List operands() const; virtual void setOperands(const Expression::List &operands); diff --git a/src/xmlpatterns/expr/qtemplate.cpp b/src/xmlpatterns/expr/qtemplate.cpp index a5cd165..3d5d948 100644 --- a/src/xmlpatterns/expr/qtemplate.cpp +++ b/src/xmlpatterns/expr/qtemplate.cpp @@ -40,6 +40,11 @@ QT_BEGIN_NAMESPACE using namespace QPatternist; +/*! \internal */ +Template::~Template() +{ +} + const SourceLocationReflection* Template::actualReflection() const { return this; diff --git a/src/xmlpatterns/expr/qtemplate_p.h b/src/xmlpatterns/expr/qtemplate_p.h index 2cc0eba..84669a8 100644 --- a/src/xmlpatterns/expr/qtemplate_p.h +++ b/src/xmlpatterns/expr/qtemplate_p.h @@ -72,8 +72,7 @@ namespace QPatternist * @ingroup Patternist_expressions * @since 4.5 */ - class Template : public QSharedData - , public SourceLocationReflection + class Q_AUTOTEST_EXPORT Template : public QSharedData, public SourceLocationReflection { public: @@ -85,6 +84,7 @@ namespace QPatternist , m_reqType(reqType) { } + ~Template(); Expression::Ptr body; diff --git a/src/xmlpatterns/expr/qvaluecomparison.cpp b/src/xmlpatterns/expr/qvaluecomparison.cpp index 09ecfef..1726666 100644 --- a/src/xmlpatterns/expr/qvaluecomparison.cpp +++ b/src/xmlpatterns/expr/qvaluecomparison.cpp @@ -51,6 +51,11 @@ ValueComparison::ValueComparison(const Expression::Ptr &op1, { } +/*! \internal */ +ValueComparison::~ValueComparison() +{ +} + Item ValueComparison::evaluateSingleton(const DynamicContext::Ptr &context) const { const Item it1(m_operand1->evaluateSingleton(context)); diff --git a/src/xmlpatterns/expr/qvaluecomparison_p.h b/src/xmlpatterns/expr/qvaluecomparison_p.h index c65c74a..37dd3a7 100644 --- a/src/xmlpatterns/expr/qvaluecomparison_p.h +++ b/src/xmlpatterns/expr/qvaluecomparison_p.h @@ -64,13 +64,14 @@ namespace QPatternist * @author Frans Englich * @ingroup Patternist_expressions */ - class ValueComparison : public PairContainer, - public ComparisonPlatform + class Q_AUTOTEST_EXPORT ValueComparison + : public PairContainer, public ComparisonPlatform { public: ValueComparison(const Expression::Ptr &op1, const AtomicComparator::Operator op, const Expression::Ptr &op2); + ~ValueComparison(); virtual Item evaluateSingleton(const DynamicContext::Ptr &) const; diff --git a/src/xmlpatterns/expr/qvariablereference.cpp b/src/xmlpatterns/expr/qvariablereference.cpp index ed5ba36..e2c5548 100644 --- a/src/xmlpatterns/expr/qvariablereference.cpp +++ b/src/xmlpatterns/expr/qvariablereference.cpp @@ -42,6 +42,11 @@ VariableReference::VariableReference(const VariableSlotID slotP) : m_varSlot(slo Q_ASSERT(m_varSlot > -1); } +/*! \internal */ +VariableReference::~VariableReference() +{ +} + Expression::Properties VariableReference::properties() const { return DisableElimination; diff --git a/src/xmlpatterns/expr/qvariablereference_p.h b/src/xmlpatterns/expr/qvariablereference_p.h index d8676a6..1ca6ade 100644 --- a/src/xmlpatterns/expr/qvariablereference_p.h +++ b/src/xmlpatterns/expr/qvariablereference_p.h @@ -58,7 +58,7 @@ namespace QPatternist * @author Frans Englich * @ingroup Patternist_expressions */ - class VariableReference : public EmptyContainer + class Q_AUTOTEST_EXPORT VariableReference : public EmptyContainer { public: typedef QExplicitlySharedDataPointer Ptr; @@ -70,6 +70,7 @@ namespace QPatternist * @param slot must be a valid slot. That is, zero or larger. */ VariableReference(const VariableSlotID slot); + ~VariableReference(); /** * @returns the slot that this reference communicates through. diff --git a/src/xmlpatterns/functions/qfunctionfactory_p.h b/src/xmlpatterns/functions/qfunctionfactory_p.h index 187edad..5759ac0 100644 --- a/src/xmlpatterns/functions/qfunctionfactory_p.h +++ b/src/xmlpatterns/functions/qfunctionfactory_p.h @@ -68,7 +68,7 @@ namespace QPatternist * Language (XPath) 2.0, Definition: Function signatures * @author Frans Englich */ - class FunctionFactory : public QSharedData + class Q_AUTOTEST_EXPORT FunctionFactory : public QSharedData { public: diff --git a/src/xmlpatterns/type/qitemtype_p.h b/src/xmlpatterns/type/qitemtype_p.h index bea6bc2..7cfad06 100644 --- a/src/xmlpatterns/type/qitemtype_p.h +++ b/src/xmlpatterns/type/qitemtype_p.h @@ -69,7 +69,7 @@ namespace QPatternist * @ingroup Patternist_types * @author Frans Englich */ - class ItemType : public virtual QSharedData + class Q_AUTOTEST_EXPORT ItemType : public virtual QSharedData { public: /** diff --git a/src/xmlpatterns/type/qsequencetype_p.h b/src/xmlpatterns/type/qsequencetype_p.h index 0828d58..870972a 100644 --- a/src/xmlpatterns/type/qsequencetype_p.h +++ b/src/xmlpatterns/type/qsequencetype_p.h @@ -69,7 +69,7 @@ namespace QPatternist * @see XML * Path Language (XPath) 2.0, 2.5.3 SequenceType Syntax */ - class SequenceType : public virtual QSharedData + class Q_AUTOTEST_EXPORT SequenceType : public virtual QSharedData { public: inline SequenceType() -- cgit v1.2.1 From 03f392f887132d5a2185627eef02db9ecf793396 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 16 Jul 2016 02:28:06 +0200 Subject: Add some missing initialization As reported by UBSan: xmlpatterns/expr/qorderby_p.h:78:15: runtime error: load of value 11181584, which is not a valid value for type 'Direction' xmlpatterns/expr/qorderby_p.h:78:15: runtime error: load of value 32766, which is not a valid value for type 'OrderingEmptySequence' xmlpatterns/schema/qxsdstatemachine_p.h:66:11: runtime error: load of value 2979516404, which is not a valid value for type 'NodeName' xmlpatterns/schema/qxsdschemaparser.cpp:340:67: runtime error: load of value 40, which is not a valid value for type 'bool' The init values are chosen to match what zero-initialization would have chosen. Change-Id: Iaf69720476cfe6c117dc2c91f39801a0be8bde54 Reviewed-by: Tobias Koenig Reviewed-by: Frederik Gladhorn --- src/xmlpatterns/expr/qorderby_p.h | 2 ++ src/xmlpatterns/schema/qxsdschemaparser.cpp | 1 + src/xmlpatterns/schema/qxsdstatemachine_tpl_p.h | 8 +++++--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/xmlpatterns/expr/qorderby_p.h b/src/xmlpatterns/expr/qorderby_p.h index addddf3..3e4a8f8 100644 --- a/src/xmlpatterns/expr/qorderby_p.h +++ b/src/xmlpatterns/expr/qorderby_p.h @@ -97,6 +97,8 @@ namespace QPatternist * @short Default constructor, which is needed by QVector. */ inline OrderSpec() + : direction(Ascending), + orderingEmptySequence(StaticContext::Greatest) { } diff --git a/src/xmlpatterns/schema/qxsdschemaparser.cpp b/src/xmlpatterns/schema/qxsdschemaparser.cpp index 53b6152..2b2c880 100644 --- a/src/xmlpatterns/schema/qxsdschemaparser.cpp +++ b/src/xmlpatterns/schema/qxsdschemaparser.cpp @@ -247,6 +247,7 @@ XsdSchemaParser::XsdSchemaParser(const XsdSchemaContext::Ptr &context, const Xsd , m_parserContext(parserContext) , m_namePool(m_parserContext->namePool()) , m_namespaceSupport(m_namePool) + , m_defaultOpenContentAppliesToEmpty(false) { m_schema = m_parserContext->schema(); m_schemaResolver = m_parserContext->resolver(); diff --git a/src/xmlpatterns/schema/qxsdstatemachine_tpl_p.h b/src/xmlpatterns/schema/qxsdstatemachine_tpl_p.h index d03bf0a..5caa26a 100644 --- a/src/xmlpatterns/schema/qxsdstatemachine_tpl_p.h +++ b/src/xmlpatterns/schema/qxsdstatemachine_tpl_p.h @@ -49,14 +49,16 @@ template XsdStateMachine::XsdStateMachine() - : m_counter(50) + : m_counter(50), + m_lastTransition() { } template XsdStateMachine::XsdStateMachine(const NamePool::Ptr &namePool) - : m_namePool(namePool) - , m_counter(50) + : m_namePool(namePool), + m_counter(50), + m_lastTransition() { } -- cgit v1.2.1 From b4b17b2035ce38b1bf4d90458d4c64dc9551c733 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 18 Jul 2016 11:51:57 +0300 Subject: Item: replace a Q_ASSERT with a Q_STATIC_ASSERT Change-Id: I32927731c73b5335f2589c0754ffef2cf0d5ed3f Reviewed-by: Tobias Koenig Reviewed-by: Frederik Gladhorn --- src/xmlpatterns/data/qitem_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xmlpatterns/data/qitem_p.h b/src/xmlpatterns/data/qitem_p.h index c5a168d..d470f45 100644 --- a/src/xmlpatterns/data/qitem_p.h +++ b/src/xmlpatterns/data/qitem_p.h @@ -205,7 +205,7 @@ namespace QPatternist inline Item(const Item &other) : node(other.node) { - Q_ASSERT_X(sizeof(QXmlNodeModelIndex) >= sizeof(AtomicValue), Q_FUNC_INFO, + Q_STATIC_ASSERT_X(sizeof(QXmlNodeModelIndex) >= sizeof(AtomicValue), "Since we're only copying the node member, it must be the largest."); if(isAtomicValue()) atomicValue->ref.ref(); -- cgit v1.2.1 From d75868d02ad37dce5806a8d1313b123ff6ce6c09 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sun, 17 Jul 2016 13:37:22 +0200 Subject: Correct return type of QXmlQueryPrivate::staticContext() As reported by UBSan: qtbase/src/corelib/tools/qshareddata.h:167:13: runtime error: downcast of address 0x2ac9a801a410 which does not point to an object of type 'GenericStaticContext' 0x2ac9a801a410: note: object is of type 'QPatternist::StaticFocusContext' 00 00 00 00 28 95 b7 9d c9 2a 00 00 01 00 00 00 c9 2a 00 00 f0 a1 01 a8 c9 2a 00 00 70 fa 0b 02 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'QPatternist::StaticFocusContext' I had no idea how the QExplicitlySharedDataPointer conversion could ever compile, until I saw that this module defines QT_ENABLE_QEXPLICITLYSHAREDDATAPOINTER_STATICCAST which is, of course, utterly broken. Change-Id: Ie392ba74438b6c75fde9fabe09f9b0e655489cd9 Reviewed-by: Tobias Koenig Reviewed-by: Frederik Gladhorn --- src/xmlpatterns/api/qxmlquery_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xmlpatterns/api/qxmlquery_p.h b/src/xmlpatterns/api/qxmlquery_p.h index 07f18fa..4f97af3 100644 --- a/src/xmlpatterns/api/qxmlquery_p.h +++ b/src/xmlpatterns/api/qxmlquery_p.h @@ -122,7 +122,7 @@ public: return m_variableLoader; } - inline QPatternist::GenericStaticContext::Ptr staticContext() + inline QPatternist::StaticContext::Ptr staticContext() { if(m_staticContext && m_expr) return m_staticContext; -- cgit v1.2.1 From 72ba369a115d97f707cbe6131d8daa751dc5b355 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sun, 17 Jul 2016 13:50:04 +0200 Subject: Fix type of QCommonValues::YearMonthDurationZero As reported by UBSan: src/corelib/tools/qshareddata.h:167:13: runtime error: downcast of address 0x0000023ce510 which does not point to an object of type 'DayTimeDuration' 0x0000023ce510: note: object is of type 'QPatternist::YearMonthDuration' 00 00 00 00 90 6c 52 5b 1f 2b 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 31 00 00 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'QPatternist::YearMonthDuration' Another victim of QT_ENABLE_QEXPLICITLYSHAREDDATAPOINTER_STATICCAST... Change-Id: I121433e0d2ad8b203ccf9d9f08bd166b39502cbb Reviewed-by: Tobias Koenig Reviewed-by: Frederik Gladhorn --- src/xmlpatterns/data/qcommonvalues.cpp | 2 +- src/xmlpatterns/data/qcommonvalues_p.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/xmlpatterns/data/qcommonvalues.cpp b/src/xmlpatterns/data/qcommonvalues.cpp index 6fa3738..c9eee2d 100644 --- a/src/xmlpatterns/data/qcommonvalues.cpp +++ b/src/xmlpatterns/data/qcommonvalues.cpp @@ -108,7 +108,7 @@ const AtomicValue::Ptr CommonValues::InfFloat const DayTimeDuration::Ptr CommonValues::DayTimeDurationZero (DayTimeDuration::fromSeconds(0)); -const DayTimeDuration::Ptr CommonValues::YearMonthDurationZero +const YearMonthDuration::Ptr CommonValues::YearMonthDurationZero (YearMonthDuration::fromComponents(true, 0, 0)); diff --git a/src/xmlpatterns/data/qcommonvalues_p.h b/src/xmlpatterns/data/qcommonvalues_p.h index 9b84de9..00e9507 100644 --- a/src/xmlpatterns/data/qcommonvalues_p.h +++ b/src/xmlpatterns/data/qcommonvalues_p.h @@ -198,7 +198,7 @@ namespace QPatternist /** * The @c xs:yearMonthDuration value P0M */ - static const DayTimeDuration::Ptr YearMonthDurationZero; + static const YearMonthDuration::Ptr YearMonthDurationZero; private: /** -- cgit v1.2.1 From c0b6fbcadbefcc8a91e5db7fd98662dddcd7a0f8 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 18 Jul 2016 09:49:25 +0300 Subject: QXmlQuery: fix smart pointer type m_resourceLoader is a QExplicitlySharedPointer, and ResourceDelegator inherits DeviceResourceLoader, but the newly-allocated object was constructed into a QExplicitlySharedPointer. Benign, but wrong. Found while trying to compile the module without QT_ENABLE_QEXPLICITLYSHAREDDATAPOINTER_STATICCAST. Change-Id: I6f0e7bd50488ae6db6ab6c7022503332cd8523f1 Reviewed-by: Frederik Gladhorn --- src/xmlpatterns/api/qxmlquery_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xmlpatterns/api/qxmlquery_p.h b/src/xmlpatterns/api/qxmlquery_p.h index 4f97af3..bacf2d0 100644 --- a/src/xmlpatterns/api/qxmlquery_p.h +++ b/src/xmlpatterns/api/qxmlquery_p.h @@ -98,7 +98,7 @@ public: { const QPatternist::AccelTreeResourceLoader::Ptr nev(new QPatternist::AccelTreeResourceLoader(namePool.d, m_networkAccessDelegator)); - m_resourceLoader = QPatternist::ResourceLoader::Ptr(new QPatternist::ResourceDelegator(m_resourceLoader->deviceURIs(), + m_resourceLoader = QPatternist::DeviceResourceLoader::Ptr(new QPatternist::ResourceDelegator(m_resourceLoader->deviceURIs(), m_resourceLoader, nev)); } -- cgit v1.2.1