This fixes the following warning
==23284== Invalid read of size 4
==23284== at 0x14911DE5: pj_ctx_get_errno (pj_ctx.c:137)
==23284== by 0x149104A9: pj_free (pj_malloc.c:188)
==23284== by 0x88C4DD3: QgsCoordinateTransformPrivate::freeProj() (qgscoordinatetransform_p.cpp:336)
==23284== by 0x88C29AB: QgsCoordinateTransformPrivate::~QgsCoordinateTransformPrivate() (qgscoordinatetransform_p.cpp:88)
==23284== by 0x88BEA6E: QExplicitlySharedDataPointer<QgsCoordinateTransformPrivate>::~QExplicitlySharedDataPointer() (qshareddata.h:156)
==23284== by 0x88B7857: QgsCoordinateTransform::~QgsCoordinateTransform() (qgscoordinatetransform.cpp:139)
==23284== by 0x88C1827: QHashNode<QPair<QString, QString>, QgsCoordinateTransform>::~QHashNode() (qhash.h:237)
==23284== by 0x88C18A6: QHash<QPair<QString, QString>, QgsCoordinateTransform>::deleteNode2(QHashData::Node*) (qhash.h:585)
==23284== by 0xB9CBBF8: QHashData::free_helper(void (*)(QHashData::Node*)) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1)
==23284== by 0x88C0276: QHash<QPair<QString, QString>, QgsCoordinateTransform>::freeData(QHashData*) (qhash.h:621)
==23284== by 0x88BF735: QHash<QPair<QString, QString>, QgsCoordinateTransform>::~QHash() (qhash.h:342)
==23284== by 0x88C1F2B: QMultiHash<QPair<QString, QString>, QgsCoordinateTransform>::~QMultiHash() (qhash.h:994)
==23284== by 0xC378369: __cxa_finalize (cxa_finalize.c:56)
==23284== by 0x8110BB2: ??? (in /home/even/qgis/QGIS/build/output/lib/libqgis_core.so.3.1.0)
==23284== by 0x4010DE6: _dl_fini (dl-fini.c:235)
==23284== by 0xC377FF7: __run_exit_handlers (exit.c:82)
==23284== by 0xC378044: exit (exit.c:104)
==23284== by 0xC35E836: (below main) (libc-start.c:325)
==23284== Address 0xaed0c6f0 is 0 bytes inside a block of size 32 free'd
==23284== at 0x4C2ECF0: free (vg_replace_malloc.c:530)
==23284== by 0x149103FD: pj_dealloc (pj_malloc.c:133)
==23284== by 0x88C1FB0: QgsProjContextStore::~QgsProjContextStore() (qgscoordinatetransform_p.cpp:45)
==23284== by 0xBE23DF5: (anonymous namespace)::run(void*) (atexit_thread.cc:71)
==23284== by 0xC377FF7: __run_exit_handlers (exit.c:82)
==23284== by 0xC378044: exit (exit.c:104)
==23284== by 0xC35E836: (below main) (libc-start.c:325)
==23284== Block was alloc'd at
==23284== at 0x4C2DBF6: malloc (vg_replace_malloc.c:299)
==23284== by 0x14911D8A: pj_ctx_alloc (pj_ctx.c:109)
==23284== by 0x88C1F64: QgsProjContextStore::QgsProjContextStore() (qgscoordinatetransform_p.cpp:40)
==23284== by 0x88C505B: __tls_init (qgscoordinatetransform_p.cpp:33)
==23284== by 0x88C5131: TLS wrapper function for QgsCoordinateTransformPrivate::mProjContext (in /home/even/qgis/QGIS/build/output/lib/libqgis_core.so.3.1.0)
==23284== by 0x88C39F6: QgsCoordinateTransformPrivate::threadLocalProjData() (qgscoordinatetransform_p.cpp:228)
==23284== by 0x88C33BE: QgsCoordinateTransformPrivate::initialize() (qgscoordinatetransform_p.cpp:162)
Follow up 217e7006. Avoid the very expensive iteration to
find matching features when a subset string is set by
instead querying the original, unfiltered layer when
we are doing a FilterFids type request.
Fixes many hangs when using OGR layers with filters in place.
When inserting features whose attribute column corresponding to the pkid
is empty, and tat this pkid column has a default value using a sequence,
then we can remove it from the INSERT statement completely, which save us
from doing a SELECT nextval(...) for each row. On the provided test case
of that ticket, on a debug build, this cuts down the insertion time from 5 minutes
to 1 minute 10s.
For some reason QPicture.detach() doesn't seem to always work as intended, at
least with QT 5.5 on Ubuntu 16.04
Serialization/deserialization is a safe way to be ensured we don't
share a copy.
Relates to a6eea7205c72a1be837ab43b79aad0c67a92a9b2
otherwise if you access the config of the filter (or change app settings) from outside the main application settings dialog, results are not invalidate
for instance, if you update a URL of a service, results won't be updated
25ba36180c causes
build failures on Ubuntu 16.04 and 18.04 with gcc
{{{
/usr/bin/c++ -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I/usr/include/Qca-qt5/QtCrypto -fPIE -std=gnu++11 -o CMakeFiles/cmTC_3b936.dir/qcaossl.cpp.o -c /home/even/qgis/QGIS/build/CMakeFiles/CMakeTmp/qcaossl.cpp
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qchar.h:37:0,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:41,
from /usr/include/x86_64-linux-gnu/qt5/QtCore/QString:1,
from /usr/include/Qca-qt5/QtCrypto/qca_core.h:36,
from /usr/include/Qca-qt5/QtCrypto/qca.h:36,
from /usr/include/Qca-qt5/QtCrypto/QtCrypto:1,
from /home/even/qgis/QGIS/build/CMakeFiles/CMakeTmp/qcaossl.cpp:2:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qglobal.h:1067:4: error: #error "You must build your code with position independent code if Qt was built with -reduce-relocations. " "Compile your code with -fPIC (-fPIE is not enough)."
# error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\
^
}}}
qtglobal.h doesn't like -fPIC and -fPIE together
See https://github.com/qgis/QGIS/pull/6093#issuecomment-393518711