Skip to content
  • Sami Rosendahl's avatar
    Fix access to uninitialized values in QtXmlPatterns · f42f82f4
    Sami Rosendahl authored
    
    
    Fixes valgrind warning like below when executing tst_QXmlQuery::copyConstructor()
      Conditional jump or move depends on uninitialised value(s)
        at: QPatternist::NodeIndexStorage::operator!=(QPatternist::NodeIndexStorage const&) const (qabstractxmlnodemodel.cpp:1220)
        by: QXmlItem::operator=(QXmlItem const&) (qabstractxmlnodemodel.cpp:1228)
    
    Reason for the warning is that QPatternist::NodeIndexStorage::operator!=
    accesses all fields of NodeIndexStorage, which are all not intialized in
    every execution path of QXmlItem::QXmlItem(const QVariant &) and class
    QPatternist::Item constructors.
    
    Fixed by adding NodeIndexStorage::reset() function that resets all fields
    and put a call to that function where NodeIndexStorage objects were
    previously incompletely initialized. Note that unfortunately class
    NodeIndexStorage cannot have a default constructor, because it is used as
    a union field.
    
    Change-Id: I758df57551ec49ce8c8b357794177b4e6c454d2f
    Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
    Reviewed-by: Dmitry Trofimov
    Reviewed-by: default avatarRobin Burchell <robin+qt@viroteck.net>
    f42f82f4