mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
This should apply to both PROJ < 6 and >=6 builds. Fixes the following error reported by Valgrind ``` ==5848== Invalid read of size 4 ==5848== at 0xE5E4195: internal_pj_ctx_get_errno (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0) ==5848== by 0xE5E16AE: internal_pj_free (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0) ==5848== by 0xE5F4E78: internal_proj_destroy (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0) ==5848== by 0x7F961A7: QgsProjUtils::ProjPJDeleter::operator()(PJconsts*) (qgsprojutils.cpp:76) ==5848== by 0x7D2D44C: std::unique_ptr<PJconsts, QgsProjUtils::ProjPJDeleter>::~unique_ptr() (unique_ptr.h:239) ==5848== by 0x7D2C9BD: QgsCoordinateReferenceSystemPrivate::~QgsCoordinateReferenceSystemPrivate() (qgscoordinatereferencesystem_p.h:94) ==5848== by 0x7D2D6FA: QExplicitlySharedDataPointer<QgsCoordinateReferenceSystemPrivate>::~QExplicitlySharedDataPointer() (qshareddata.h:165) ==5848== by 0x7CDFA77: QgsCoordinateReferenceSystem::~QgsCoordinateReferenceSystem() (qgscoordinatereferencesystem.cpp:233) ==5848== by 0x55CC0AF: QgsEllipsoidUtils::EllipsoidParameters::~EllipsoidParameters() (qgsellipsoidutils.h:39) ==5848== by 0x7D8C40B: QHashNode<QString, QgsEllipsoidUtils::EllipsoidParameters>::~QHashNode() (qhash.h:149) ==5848== by 0x7D8C43F: QHash<QString, QgsEllipsoidUtils::EllipsoidParameters>::deleteNode2(QHashData::Node*) (qhash.h:536) ==5848== by 0x9BE3B78: QHashData::free_helper(void (*)(QHashData::Node*)) (in /opt/qt59/lib/libQt5Core.so.5.9.1) ==5848== by 0x7D8C466: QHash<QString, QgsEllipsoidUtils::EllipsoidParameters>::freeData(QHashData*) (qhash.h:576) ==5848== by 0x7D8CCED: QHash<QString, QgsEllipsoidUtils::EllipsoidParameters>::~QHash() (qhash.h:254) ==5848== by 0xA60E369: __cxa_finalize (cxa_finalize.c:56) ==5848== by 0x77BE742: ??? (in /home/even/qgis/QGIS/build/output/lib/libqgis_core.so.3.9.0) ==5848== by 0x4010DF6: _dl_fini (dl-fini.c:235) ==5848== by 0xA60DFF7: __run_exit_handlers (exit.c:82) ==5848== by 0xA60E044: exit (exit.c:104) ==5848== by 0xA5F4836: (below main) (libc-start.c:325) ==5848== Address 0x45db80e0 is 0 bytes inside a block of size 136 free'd ==5848== at 0x4C2F440: operator delete(void*) (vg_replace_malloc.c:586) ==5848== by 0xE5F5A3A: internal_proj_context_destroy (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0) ==5848== by 0x7F9617A: QgsProjContext::~QgsProjContext() (qgsprojutils.cpp:48) ==5848== by 0xA60E5FE: __call_tls_dtors (cxa_thread_atexit_impl.c:155) ==5848== by 0xA60DF26: __run_exit_handlers (exit.c:40) ==5848== by 0xA60E044: exit (exit.c:104) ==5848== by 0xA5F4836: (below main) (libc-start.c:325) ==5848== Block was alloc'd at ==5848== at 0x4C2E709: operator new(unsigned long, std::nothrow_t const&) (vg_replace_malloc.c:387) ==5848== by 0xE5E445E: internal_pj_ctx_alloc (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0) ==5848== by 0x7F96151: QgsProjContext::QgsProjContext() (qgsprojutils.cpp:39) ==5848== by 0x7F970A9: __tls_init (qgsprojutils.cpp:31) ==5848== by 0x7F970F3: TLS wrapper function for QgsProjContext::sProjContext (in /home/even/qgis/QGIS/build/output/lib/libqgis_core.so.3.9.0) ==5848== by 0x7F96186: QgsProjContext::get() (qgsprojutils.cpp:57) ==5848== by 0x7D86B13: QgsEllipsoidUtils::definitions() (qgsellipsoidutils.cpp:351) ==5848== by 0x7D863FE: QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1}::operator()() const (qgsellipsoidutils.cpp:173) ==5848== by 0x7D87EE1: void std::_Bind_simple<QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1531) ==5848== by 0x7D87BC5: std::_Bind_simple<QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1} ()>::operator()() (functional:1520) ==5848== by 0x7D879A2: void std::__once_call_impl<std::_Bind_simple<QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1} ()> >() (mutex:706) ==5848== by 0x10A6AA98: __pthread_once_slow (pthread_once.c:116) ==5848== by 0x7D863CE: __gthread_once(int*, void (*)()) (gthr-default.h:699) ==5848== by 0x7D8787F: void std::call_once<QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1}>(std::once_flag&, QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1}&&) (mutex:738) ==5848== by 0x7D86476: QgsEllipsoidUtils::ellipsoidParameters(QString const&) (qgsellipsoidutils.cpp:174) ==5848== by 0x7E8D572: QgsMapSettings::setEllipsoid(QString const&) (qgsmapsettings.cpp:322) ==5848== by 0x6A4E5F1: QgsMapCanvas::QgsMapCanvas(QWidget*) (qgsmapcanvas.cpp:143) ==5848== by 0x5110841: QgisApp::QgisApp(QSplashScreen*, bool, bool, QString const&, QString const&, QWidget*, QFlags<Qt::WindowType>) (qgisapp.cpp:803) ==5848== by 0x417DB9: main (main.cpp:1339) ==5848== ```
78 lines
2.2 KiB
Plaintext
78 lines
2.2 KiB
Plaintext
/************************************************************************
|
|
* This file has been generated automatically from *
|
|
* *
|
|
* src/core/qgsellipsoidutils.h *
|
|
* *
|
|
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
|
|
************************************************************************/
|
|
|
|
|
|
|
|
class QgsEllipsoidUtils
|
|
{
|
|
%Docstring
|
|
Contains utility functions for working with ellipsoids and querying the ellipsoid database.
|
|
|
|
.. versionadded:: 3.0
|
|
%End
|
|
|
|
%TypeHeaderCode
|
|
#include "qgsellipsoidutils.h"
|
|
%End
|
|
public:
|
|
|
|
struct EllipsoidParameters
|
|
{
|
|
bool valid;
|
|
|
|
double semiMajor;
|
|
double semiMinor;
|
|
|
|
bool useCustomParameters;
|
|
|
|
double inverseFlattening;
|
|
|
|
QgsCoordinateReferenceSystem crs;
|
|
};
|
|
|
|
struct EllipsoidDefinition
|
|
{
|
|
QString acronym;
|
|
QString description;
|
|
QgsEllipsoidUtils::EllipsoidParameters parameters;
|
|
};
|
|
|
|
static EllipsoidParameters ellipsoidParameters( const QString &ellipsoid );
|
|
%Docstring
|
|
Returns the parameters for the specified ``ellipsoid``.
|
|
Results are cached to allow for fast retrieval of parameters.
|
|
%End
|
|
|
|
static QList< QgsEllipsoidUtils::EllipsoidDefinition > definitions();
|
|
%Docstring
|
|
Returns a list of the definitions for all known ellipsoids from the
|
|
internal ellipsoid database.
|
|
|
|
.. seealso:: :py:func:`acronyms`
|
|
%End
|
|
|
|
static QStringList acronyms();
|
|
%Docstring
|
|
Returns a list of all known ellipsoid acronyms from the internal
|
|
ellipsoid database.
|
|
|
|
.. seealso:: :py:func:`definitions`
|
|
%End
|
|
|
|
|
|
};
|
|
|
|
|
|
/************************************************************************
|
|
* This file has been generated automatically from *
|
|
* *
|
|
* src/core/qgsellipsoidutils.h *
|
|
* *
|
|
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
|
|
************************************************************************/
|