diff -Nru gdal-2.4.0+dfsg/alg/gdalrasterize.cpp gdal-2.4.2+dfsg/alg/gdalrasterize.cpp --- gdal-2.4.0+dfsg/alg/gdalrasterize.cpp 2018-12-14 21:35:07.000000000 +0000 +++ gdal-2.4.2+dfsg/alg/gdalrasterize.cpp 2019-06-28 11:11:03.000000000 +0000 @@ -52,7 +52,7 @@ #include "ogr_spatialref.h" #include "ogrsf_frmts.h" -CPL_CVSID("$Id: gdalrasterize.cpp 6ef13199b493973da285decbfcd5e2a763954b97 2018-06-07 05:46:42 -0400 luzpaz $") +CPL_CVSID("$Id: gdalrasterize.cpp 844f6a3820c0897dd79adba03472523c705c5c6b 2019-03-27 12:38:47 +0200 Ari Jolma $") /************************************************************************/ /* gvBurnScanline() */ @@ -89,8 +89,8 @@ unsigned char *pabyInsert = psInfo->pabyChunkBuf - + iBand * psInfo->nXSize * psInfo->nYSize - + nY * psInfo->nXSize + nXStart; + + static_cast(iBand) * psInfo->nXSize * psInfo->nYSize + + static_cast(nY) * psInfo->nXSize + nXStart; if( psInfo->eMergeAlg == GRMA_Add ) { int nPixels = nXEnd - nXStart + 1; @@ -113,8 +113,8 @@ double *padfInsert = (reinterpret_cast(psInfo->pabyChunkBuf)) - + iBand * psInfo->nXSize * psInfo->nYSize - + nY * psInfo->nXSize + nXStart; + + static_cast(iBand) * psInfo->nXSize * psInfo->nYSize + + static_cast(nY) * psInfo->nXSize + nXStart; if( psInfo->eMergeAlg == GRMA_Add ) { while( nPixels-- > 0 ) @@ -147,8 +147,8 @@ for( int iBand = 0; iBand < psInfo->nBands; iBand++ ) { unsigned char *pbyInsert = psInfo->pabyChunkBuf - + iBand * psInfo->nXSize * psInfo->nYSize - + nY * psInfo->nXSize + nX; + + static_cast(iBand) * psInfo->nXSize * psInfo->nYSize + + static_cast(nY) * psInfo->nXSize + nX; double dfVal; if( psInfo->eMergeAlg == GRMA_Add ) { dfVal = *pbyInsert + ( psInfo->padfBurnValue[iBand] + @@ -172,8 +172,8 @@ for( int iBand = 0; iBand < psInfo->nBands; iBand++ ) { double *pdfInsert = reinterpret_cast(psInfo->pabyChunkBuf) - + iBand * psInfo->nXSize * psInfo->nYSize - + nY * psInfo->nXSize + nX; + + static_cast(iBand) * psInfo->nXSize * psInfo->nYSize + + static_cast(nY) * psInfo->nXSize + nX; if( psInfo->eMergeAlg == GRMA_Add ) { *pdfInsert += ( psInfo->padfBurnValue[iBand] + diff -Nru gdal-2.4.0+dfsg/alg/gdaltransformer.cpp gdal-2.4.2+dfsg/alg/gdaltransformer.cpp --- gdal-2.4.0+dfsg/alg/gdaltransformer.cpp 2018-12-14 21:35:07.000000000 +0000 +++ gdal-2.4.2+dfsg/alg/gdaltransformer.cpp 2019-06-28 11:11:08.000000000 +0000 @@ -57,7 +57,7 @@ #include "ogr_srs_api.h" -CPL_CVSID("$Id: gdaltransformer.cpp 9ff327806cd64df6d73a6c91f92d12ca0c5e07df 2018-04-07 20:25:06 +0200 Even Rouault $") +CPL_CVSID("$Id: gdaltransformer.cpp a2ed4ac165fa3d0622d71849890b3e4ddaebecab 2019-06-17 18:33:13 +0200 Even Rouault $") CPL_C_START void *GDALDeserializeGCPTransformer( CPLXMLNode *psTree ); @@ -2422,8 +2422,10 @@ CPLCalloc(sizeof(GDALReprojectionTransformInfo), 1)); psInfo->poForwardTransform = poForwardTransform; + CPLPushErrorHandler(CPLQuietErrorHandler); psInfo->poReverseTransform = OGRCreateCoordinateTransformation(&oDstSRS, &oSrcSRS); + CPLPopErrorHandler(); memcpy( psInfo->sTI.abySignature, GDAL_GTI2_SIGNATURE, @@ -2489,8 +2491,24 @@ int bSuccess; if( bDstToSrc ) - bSuccess = psInfo->poReverseTransform->TransformEx( - nPointCount, padfX, padfY, padfZ, panSuccess ); + { + if( psInfo->poReverseTransform == nullptr ) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Inverse coordinate transformation cannot be instantiated"); + if( panSuccess ) + { + for( int i = 0; i < nPointCount; i++ ) + panSuccess[i] = FALSE; + } + bSuccess = false; + } + else + { + bSuccess = psInfo->poReverseTransform->TransformEx( + nPointCount, padfX, padfY, padfZ, panSuccess ); + } + } else bSuccess = psInfo->poForwardTransform->TransformEx( nPointCount, padfX, padfY, padfZ, panSuccess ); @@ -3306,8 +3324,11 @@ // Compute determinate. const double det = gt_in[1] * gt_in[5] - gt_in[2] * gt_in[4]; + const double magnitude = std::max( + std::max(fabs(gt_in[1]), fabs(gt_in[2])), + std::max(fabs(gt_in[4]), fabs(gt_in[5]))); - if( fabs(det) < 0.000000000000001 ) + if( fabs(det) <= 1e-10 * magnitude * magnitude ) return 0; const double inv_det = 1.0 / det; diff -Nru gdal-2.4.0+dfsg/alg/gdalwarpkernel.cpp gdal-2.4.2+dfsg/alg/gdalwarpkernel.cpp --- gdal-2.4.0+dfsg/alg/gdalwarpkernel.cpp 2018-12-14 21:35:07.000000000 +0000 +++ gdal-2.4.2+dfsg/alg/gdalwarpkernel.cpp 2019-06-28 11:11:03.000000000 +0000 @@ -71,7 +71,7 @@ #endif -CPL_CVSID("$Id: gdalwarpkernel.cpp 805bf6906b8af247eab8dee060e215d6b8e5c7ae 2018-11-18 12:25:32 +0100 Even Rouault $") +CPL_CVSID("$Id: gdalwarpkernel.cpp 33038ab2ada763440be99c4622635eac327e764b 2019-06-18 18:16:34 +0200 Even Rouault $") constexpr double BAND_DENSITY_THRESHOLD = 0.0000000001; constexpr float SRC_DENSITY_THRESHOLD = 0.000000001f; @@ -1930,7 +1930,7 @@ if( poWK->papanBandSrcValid != nullptr && poWK->papanBandSrcValid[iBand] != nullptr - && ((poWK->papanBandSrcValid[iBand][iSrcOffset>>5] + && !((poWK->papanBandSrcValid[iBand][iSrcOffset>>5] & (0x01 << (iSrcOffset & 0x1f)))) ) { *pdfDensity = 0.0; diff -Nru gdal-2.4.0+dfsg/alg/marching_squares/segment_merger.h gdal-2.4.2+dfsg/alg/marching_squares/segment_merger.h --- gdal-2.4.0+dfsg/alg/marching_squares/segment_merger.h 2018-12-14 21:35:13.000000000 +0000 +++ gdal-2.4.2+dfsg/alg/marching_squares/segment_merger.h 2019-06-28 11:11:03.000000000 +0000 @@ -109,10 +109,16 @@ for ( auto& l : lines_ ) { const int levelIdx = l.first; - for ( auto it = l.second.begin(); it != l.second.end(); it++ ) { + auto it = l.second.begin(); + while ( it != l.second.end() ) { if ( ! it->isMerged ) { + // Note that emitLine_ erases `it` and returns an iterator advanced + // to the next element. it = emitLine_( levelIdx, it, /* closed */ false ); } + else { + ++it; + } } } } diff -Nru gdal-2.4.0+dfsg/alg/rasterfill.cpp gdal-2.4.2+dfsg/alg/rasterfill.cpp --- gdal-2.4.0+dfsg/alg/rasterfill.cpp 2018-12-14 21:35:13.000000000 +0000 +++ gdal-2.4.2+dfsg/alg/rasterfill.cpp 2019-06-28 11:11:09.000000000 +0000 @@ -45,7 +45,7 @@ #include "cpl_vsi.h" #include "gdal.h" -CPL_CVSID("$Id: rasterfill.cpp 659a9911890ce155f5b822462d1bc7804e642644 2018-08-07 22:13:41 +0200 Even Rouault $") +CPL_CVSID("$Id: rasterfill.cpp e7b66104a47ca8263fc6aed748b9d28c19c0a93e 2018-12-12 22:09:01 +0100 Juergen E. Fischer $") /************************************************************************/ /* GDALFilterLine() */ @@ -397,7 +397,7 @@ *
  • TEMP_FILE_DRIVER=gdal_driver_name. For example MEM.
  • *
  • NODATA=value (starting with GDAL 2.4). * Source pixels at that value will be ignored by the interpolator. Warning: - * currently this will not be honored by smothing passes.
  • + * currently this will not be honored by smoothing passes. * * @param pfnProgress the progress function to report completion. * @param pProgressArg callback data for progress function. diff -Nru gdal-2.4.0+dfsg/apps/gdal_contour.cpp gdal-2.4.2+dfsg/apps/gdal_contour.cpp --- gdal-2.4.0+dfsg/apps/gdal_contour.cpp 2018-12-14 21:35:13.000000000 +0000 +++ gdal-2.4.2+dfsg/apps/gdal_contour.cpp 2019-06-28 11:14:36.000000000 +0000 @@ -37,7 +37,7 @@ #include "ogr_srs_api.h" #include "commonutils.h" -CPL_CVSID("$Id: gdal_contour.cpp b9ddc19f9ccd776cac9388f260aebc24439f10aa 2018-10-09 11:45:33 +0200 Julien Cabieces $") +CPL_CVSID("$Id: gdal_contour.cpp 3895dc399ec85aa97a1a88949c6acdfac807d745 2019-04-30 13:00:55 +0200 Even Rouault $") /************************************************************************/ /* ArgIsNumeric() */ @@ -73,8 +73,6 @@ static void CreateElevAttrib(const char* pszElevAttrib, OGRLayerH hLayer) { OGRFieldDefnH hFld = OGR_Fld_Create( pszElevAttrib, OFTReal ); - OGR_Fld_SetWidth( hFld, 12 ); - OGR_Fld_SetPrecision( hFld, 3 ); OGRErr eErr = OGR_L_CreateField( hLayer, hFld, FALSE ); OGR_Fld_Destroy( hFld ); if( eErr == OGRERR_FAILURE ) diff -Nru gdal-2.4.0+dfsg/apps/gdalwarp_lib.cpp gdal-2.4.2+dfsg/apps/gdalwarp_lib.cpp --- gdal-2.4.0+dfsg/apps/gdalwarp_lib.cpp 2018-12-14 21:35:15.000000000 +0000 +++ gdal-2.4.2+dfsg/apps/gdalwarp_lib.cpp 2019-06-28 11:14:35.000000000 +0000 @@ -59,7 +59,7 @@ #include "ogr_srs_api.h" #include "vrtdataset.h" -CPL_CVSID("$Id: gdalwarp_lib.cpp 51cb6592009fb12c1794b3a282d2a4b6114a7cb6 2018-10-15 22:05:35 +0200 Even Rouault $") +CPL_CVSID("$Id: gdalwarp_lib.cpp f8917ecb5840eb06e40a2c8d38c537657424077a 2019-03-13 17:05:37 +0100 Even Rouault $") /************************************************************************/ /* GDALWarpAppOptions */ @@ -329,7 +329,8 @@ char** papszWarpOptions, int nSrcCount, GDALDatasetH *pahSrcDS, double& dfMinX, double& dfMinY, - double& dfMaxX, double &dfMaxY ) + double& dfMaxX, double &dfMaxY, + const GDALWarpAppOptions* psOptions ) { // We could possibly directly reproject from cutline SRS to target SRS, // but when applying the cutline, it is reprojected to source raster image @@ -462,7 +463,8 @@ dfMinY = sEnvelope.MinY; dfMaxX = sEnvelope.MaxX; dfMaxY = sEnvelope.MaxY; - if( hCTSrcToDst == nullptr && nSrcCount > 0 && pahSrcDS[0] != nullptr) + if( hCTSrcToDst == nullptr && nSrcCount > 0 && pahSrcDS[0] != nullptr && + psOptions->dfXRes == 0.0 && psOptions->dfYRes == 0.0 ) { // No raster reprojection: stick on exact pixel boundaries of the source // to preserve resolution and avoid resampling @@ -955,7 +957,8 @@ psOptions->papszWarpOptions, nSrcCount, pahSrcDS, psOptions->dfMinX, psOptions->dfMinY, - psOptions->dfMaxX, psOptions->dfMaxY ); + psOptions->dfMaxX, psOptions->dfMaxY, + psOptions ); if(eError == CE_Failure) { GDALWarpAppOptionsFree(psOptions); @@ -2628,7 +2631,9 @@ psOptions->dfMinY = adfDstGeoTransform[3] + adfDstGeoTransform[5] * nLines; } - if ( psOptions->bTargetAlignedPixels ) + if ( psOptions->bTargetAlignedPixels || + (psOptions->bCropToCutline && + CPLFetchBool(psOptions->papszWarpOptions, "CUTLINE_ALL_TOUCHED", false)) ) { psOptions->dfMinX = floor(psOptions->dfMinX / psOptions->dfXRes) * psOptions->dfXRes; psOptions->dfMaxX = ceil(psOptions->dfMaxX / psOptions->dfXRes) * psOptions->dfXRes; diff -Nru gdal-2.4.0+dfsg/ci/travis/trusty_clang/before_install.sh gdal-2.4.2+dfsg/ci/travis/trusty_clang/before_install.sh --- gdal-2.4.0+dfsg/ci/travis/trusty_clang/before_install.sh 2018-12-14 21:35:18.000000000 +0000 +++ gdal-2.4.2+dfsg/ci/travis/trusty_clang/before_install.sh 2019-06-28 11:12:24.000000000 +0000 @@ -7,27 +7,36 @@ sudo apt-get remove libpq* postgresql* find /etc/apt/sources.list.d sudo mv /etc/apt/sources.list.d/pgdg* /tmp -sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable +sudo add-apt-repository -y ppa:ubuntugis/ppa +sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-testing #sudo add-apt-repository -y ppa:marlam/gta sudo apt-get update +# install test dependencies +# note: pip 9 is installed on the box, but it hits a strange error after upgrading setuptools. +# so we install a newer pip first. +sudo apt-get remove -y python-* +sudo apt-get install python-minimal +curl -sSL 'https://bootstrap.pypa.io/get-pip.py' | sudo python +(cd autotest; sudo -H pip install -U -r ./requirements.txt) + +sudo pip install lxml flake8 numpy + # MSSQL: server side docker pull microsoft/mssql-server-linux:2017-latest sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=DummyPassw0rd' -p 1433:1433 --name sql1 -d microsoft/mssql-server-linux:2017-latest sleep 10 docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -l 30 -S localhost -U SA -P DummyPassw0rd -Q "CREATE DATABASE TestDB;" -sudo apt-get install -y --allow-unauthenticated ccache python-numpy libpng12-dev libjpeg-dev libgif-dev liblzma-dev libgeos-dev libcurl4-gnutls-dev libproj-dev libxml2-dev libexpat-dev libxerces-c-dev libnetcdf-dev netcdf-bin libpoppler-dev libspatialite-dev gpsbabel swig libhdf4-alt-dev libhdf5-serial-dev libpodofo-dev poppler-utils libfreexl-dev unixodbc-dev libwebp-dev libepsilon-dev liblcms2-2 libpcre3-dev mercurial cmake libcrypto++-dev postgresql-9.3-postgis-2.2 postgresql-9.3-postgis-scripts libpq-dev +sudo apt-get install -y --allow-unauthenticated ccache libpng12-dev libjpeg-dev libgif-dev liblzma-dev libgeos-dev libcurl4-gnutls-dev libproj-dev libxml2-dev libexpat-dev libxerces-c-dev libnetcdf-dev netcdf-bin libpoppler-dev libspatialite-dev gpsbabel swig libhdf4-alt-dev libhdf5-serial-dev libpodofo-dev poppler-utils libfreexl-dev unixodbc-dev libwebp-dev libepsilon-dev liblcms2-2 libpcre3-dev mercurial cmake libcrypto++-dev postgresql-9.3-postgis-2.2 postgresql-9.3-postgis-scripts libpq-dev # libgta-dev -sudo apt-get install -y python-lxml -sudo apt-get install -y python-pip sudo apt-get install -y libqhull-dev sudo apt-get install -y libogdi3.2-dev # MONO sudo apt-get install -y mono-mcs libmono-system-drawing4.0-cil # Boost for Mongo #sudo apt-get install -y libboost-regex-dev libboost-system-dev libboost-thread-dev -sudo pip install flake8 + sudo apt-get install doxygen texlive-latex-base # flake8 codes to just emulate pyflakes (http://flake8.pycqa.org/en/latest/user/error-codes.html) FLAKE8="flake8 --select=F401,F402,F403,F404,F405,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F721,F722,F811,F812,F821,F822,F823,F831,F841,F901" @@ -84,13 +93,14 @@ cd ../.. # MSSQL: client side -sudo bash -c "curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -" -sudo bash -c "curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list | tee /etc/apt/sources.list.d/msprod.list" -sudo apt-get update -sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 +# Disabled because of 'Failed to fetch https://packages.microsoft.com/ubuntu/14.04/prod/dists/trusty/main/binary-amd64/Packages.gz Hash Sum mismatch' +#sudo bash -c "curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -" +#sudo bash -c "curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list | tee /etc/apt/sources.list.d/msprod.list" +#sudo apt-get update +#sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 # Nasty: force reinstallation of unixodbc-dev since the previous line installed unixodbc 2.3.1 from microsoft repo, which lacks the -dev package -# DONT DO THAT ON YOUR PRODUCTION SERVER. +# DON'T DO THAT ON YOUR PRODUCTION SERVER. wget http://mirrors.edge.kernel.org/ubuntu/pool/main/u/unixodbc/libodbc1_2.3.1-4.1_amd64.deb wget http://mirrors.edge.kernel.org/ubuntu/pool/main/u/unixodbc/odbcinst1debian2_2.3.1-4.1_amd64.deb wget http://mirrors.edge.kernel.org/ubuntu/pool/main/u/unixodbc/odbcinst_2.3.1-4.1_amd64.deb diff -Nru gdal-2.4.0+dfsg/ci/travis/trusty_clang/install.sh gdal-2.4.2+dfsg/ci/travis/trusty_clang/install.sh --- gdal-2.4.0+dfsg/ci/travis/trusty_clang/install.sh 2018-12-14 21:35:18.000000000 +0000 +++ gdal-2.4.2+dfsg/ci/travis/trusty_clang/install.sh 2019-06-28 11:12:24.000000000 +0000 @@ -41,7 +41,7 @@ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/jre/bin:$PATH java -version - make + (make 2>/tmp/log.txt || cat /tmp/log.txt) mv java.opt.bak java.opt ) @@ -51,7 +51,7 @@ cd ../.. cd swig/csharp make generate -make +make 2>/tmp/log.txt || cat /tmp/log.txt cd ../.. sudo rm -f /usr/lib/libgdal.so* sudo rm -f /usr/include/gdal*.h /usr/include/ogr*.h /usr/include/gnm*.h /usr/include/cpl*.h diff -Nru gdal-2.4.0+dfsg/ci/travis/trusty_clang/script.sh gdal-2.4.2+dfsg/ci/travis/trusty_clang/script.sh --- gdal-2.4.0+dfsg/ci/travis/trusty_clang/script.sh 2018-12-14 21:35:18.000000000 +0000 +++ gdal-2.4.2+dfsg/ci/travis/trusty_clang/script.sh 2019-06-28 11:12:24.000000000 +0000 @@ -36,9 +36,6 @@ unzip PGeoTest.zip cd ../../.. -# install test dependencies -sudo -H pip install -U -r ./requirements.txt - export PYTHONPATH=/usr/lib/python2.7/dist-packages # Run ogr_fgdb.py in isolation from the rest diff -Nru gdal-2.4.0+dfsg/ci/travis/ubuntu_1604/install.sh gdal-2.4.2+dfsg/ci/travis/ubuntu_1604/install.sh --- gdal-2.4.0+dfsg/ci/travis/ubuntu_1604/install.sh 2018-12-14 21:35:18.000000000 +0000 +++ gdal-2.4.2+dfsg/ci/travis/ubuntu_1604/install.sh 2019-06-28 11:12:24.000000000 +0000 @@ -11,7 +11,7 @@ chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/libspatialite libspatialite.fossil && mkdir sl && cd sl && fossil open ../libspatialite.fossil && CCACHE_CPP2=yes CC='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' CXX='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' ./configure --prefix=/usr --disable-geos370 && CCACHE_CPP2=yes make -j3" sudo chroot "$chroot" sh -c "cd $PWD && cd sl && make -j3 install" -chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/librasterlite2 librasterlite2.fossil && mkdir rl2 && cd rl2 && fossil open ../librasterlite2.fossil && CCACHE_CPP2=yes CC='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' CXX='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' ./configure --prefix=/usr && CCACHE_CPP2=yes make -j3" +chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/librasterlite2 librasterlite2.fossil && mkdir rl2 && cd rl2 && fossil open ../librasterlite2.fossil && CCACHE_CPP2=yes CC='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' CXX='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' ./configure --prefix=/usr --disable-lz4 --disable-zstd && CCACHE_CPP2=yes make -j3" sudo chroot "$chroot" sh -c "cd $PWD && cd rl2 && make -j3 install" chroot "$chroot" sh -c "cd $PWD/gdal && CCACHE_CPP2=yes CC='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' CXX='ccache $PWD/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang' LDFLAGS='-lstdc++' ./configure --prefix=/usr --without-libtool --enable-debug --with-jpeg12 --with-python --with-poppler --with-podofo --with-spatialite --with-mysql --with-liblzma --with-webp --with-epsilon --with-static-proj4 --with-poppler --with-podofo --with-hdf5 --with-dods-root=/usr --with-sosi --with-mysql --with-rasterlite2 --with-fgdb=$PWD/FileGDB_API-64gcc51" diff -Nru gdal-2.4.0+dfsg/ci/travis/ubuntu_1804/install.sh gdal-2.4.2+dfsg/ci/travis/ubuntu_1804/install.sh --- gdal-2.4.0+dfsg/ci/travis/ubuntu_1804/install.sh 2018-12-14 21:35:18.000000000 +0000 +++ gdal-2.4.2+dfsg/ci/travis/ubuntu_1804/install.sh 2019-06-28 11:12:23.000000000 +0000 @@ -11,7 +11,7 @@ chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/libspatialite libspatialite.fossil && mkdir sl && cd sl && fossil open ../libspatialite.fossil && CCACHE_CPP2=yes CC='ccache gcc' CXX='ccache g++' ./configure --prefix=/usr --disable-geos370 && CCACHE_CPP2=yes make -j3" sudo chroot "$chroot" sh -c "cd $PWD && cd sl && make -j3 install" -chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/librasterlite2 librasterlite2.fossil && mkdir rl2 && cd rl2 && fossil open ../librasterlite2.fossil && CCACHE_CPP2=yes CC='ccache gcc' CXX='ccache g++' ./configure --prefix=/usr && CCACHE_CPP2=yes make -j3" +chroot "$chroot" sh -c "cd $PWD && fossil clone https://www.gaia-gis.it/fossil/librasterlite2 librasterlite2.fossil && mkdir rl2 && cd rl2 && fossil open ../librasterlite2.fossil && CCACHE_CPP2=yes CC='ccache gcc' CXX='ccache g++' ./configure --prefix=/usr --disable-lz4 --disable-zstd && CCACHE_CPP2=yes make -j3" sudo chroot "$chroot" sh -c "cd $PWD && cd rl2 && make -j3 install" chroot "$chroot" sh -c "cd $PWD/gdal && CCACHE_CPP2=yes CC='ccache gcc' CXX='ccache g++' LDFLAGS='-lstdc++' ./configure --prefix=/usr --without-libtool --with-jpeg12 --with-python --with-poppler --with-spatialite --with-mysql --with-liblzma --with-webp --with-epsilon --with-static-proj4 --with-poppler --with-hdf5 --with-dods-root=/usr --with-sosi --with-mysql --with-rasterlite2 --with-fgdb=$PWD/FileGDB_API-64gcc51" diff -Nru gdal-2.4.0+dfsg/configure gdal-2.4.2+dfsg/configure --- gdal-2.4.0+dfsg/configure 2018-12-14 21:34:19.000000000 +0000 +++ gdal-2.4.2+dfsg/configure 2019-06-28 11:09:58.000000000 +0000 @@ -668,14 +668,11 @@ PODOFO_INC HAVE_PODOFO POPPLER_PLUGIN_LIB -POPPLER_INC -POPPLER_0_69_OR_LATER -POPPLER_0_58_OR_LATER -POPPLER_0_23_OR_LATER -POPPLER_0_20_OR_LATER -POPPLER_BASE_STREAM_HAS_TWO_ARGS -POPPLER_HAS_OPTCONTENT +POPPLER_MINOR_VERSION +POPPLER_MAJOR_VERSION HAVE_POPPLER +POPPLER_LIBS +POPPLER_CFLAGS PDF_PLUGIN PAM_SETTING JSON_INCLUDE @@ -1111,7 +1108,9 @@ OPENJPEG_CFLAGS OPENJPEG_LIBS LIBKML_CFLAGS -LIBKML_LIBS' +LIBKML_LIBS +POPPLER_CFLAGS +POPPLER_LIBS' # Initialize some variables set by options. @@ -1916,6 +1915,10 @@ LIBKML_CFLAGS C compiler flags for LIBKML, overriding pkg-config LIBKML_LIBS linker flags for LIBKML, overriding pkg-config + POPPLER_CFLAGS + C compiler flags for POPPLER, overriding pkg-config + POPPLER_LIBS + linker flags for POPPLER, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -21224,6 +21227,43 @@ done +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RLIMIT_AS" >&5 +$as_echo_n "checking for RLIMIT_AS... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ + + return RLIMIT_AS; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +cat >>confdefs.h <<_ACEOF +#define HAVE_RLIMIT_AS 1 +_ACEOF + + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' @@ -27333,7 +27373,8 @@ for ac_header in $NETCDF_INCLUDEDIR/netcdf_mem.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <$NETCDF_INCLUDEDIR/netcdf.h> +" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -34798,208 +34839,225 @@ HAVE_POPPLER=no -POPPLER_HAS_OPTCONTENT=no -POPPLER_BASE_STREAM_HAS_TWO_ARGS=no -POPPLER_0_20_OR_LATER=no -POPPLER_0_23_OR_LATER=no -POPPLER_0_58_OR_LATER=no -POPPLER_0_69_OR_LATER=no +POPPLER_MAJOR_VERSION= +POPPLER_MINOR_VERSION= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for poppler" >&5 $as_echo_n "checking for poppler... " >&6; } if test "$with_poppler" != "no" -a "$with_poppler" != ""; then - if test "$with_poppler" = "yes" ; then - TEST_POPPLER_INC="-I/usr/include -I/usr/include/poppler" - TEST_POPPLER_LIB="-lpoppler" - else - TEST_POPPLER_INC="-I$with_poppler/include -I$with_poppler/include/poppler" - TEST_POPPLER_LIB="-L$with_poppler/lib -lpoppler" - fi - - # Check that we can accept Page::pageObj private member - rm -f testpoppler.* - echo '#define private public' > testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo 'int main(int argc, char** argv) { return &(((Page*)0x8000)->pageObj) == 0; } ' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -o testpoppler ${TEST_POPPLER_INC} ${TEST_POPPLER_LIB} 2>&1`" ; then - HAVE_POPPLER=yes - else - # poppler 0.23.0 needs to be linked against pthread - TEST_POPPLER_LIB="${TEST_POPPLER_LIB} -lpthread" - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -o testpoppler ${TEST_POPPLER_INC} ${TEST_POPPLER_LIB} 2>&1`" ; then - HAVE_POPPLER=yes - fi - fi - if test "$HAVE_POPPLER" = "yes"; then - if test "$PDF_PLUGIN" = "no"; then - LIBS="${TEST_POPPLER_LIB} ${LIBS}" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - POPPLER_INC=$TEST_POPPLER_INC - POPPLER_PLUGIN_LIB="${TEST_POPPLER_LIB}" - - CHECK_OTHER_POPPLER_VERSION=yes +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if OptionalContent has API >= 0.69.0" >&5 -$as_echo_n "checking if OptionalContent has API >= 0.69.0... " >&6; } - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo 'int main(int argc, char** argv) {' >> testpoppler.cpp - echo 'OCGs ocg(nullptr, nullptr);' >> testpoppler.cpp - echo 'ocg.getOCGs().size();' >> testpoppler.cpp - echo 'return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_0_69_OR_LATER=yes - POPPLER_0_58_OR_LATER=yes - POPPLER_0_23_OR_LATER=yes - POPPLER_0_20_OR_LATER=yes - POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes - POPPLER_HAS_OPTCONTENT=yes - CHECK_OTHER_POPPLER_VERSION=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - fi - fi +fi - if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then - # And now we check if we have Poppler >= 0.58.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Object does have new API (>= 0.58.0)" >&5 -$as_echo_n "checking if Object does have new API (>= 0.58.0)... " >&6; } - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo 'int main(int argc, char** argv) { Object o(objNull); return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_0_58_OR_LATER=yes - POPPLER_0_23_OR_LATER=yes - POPPLER_0_20_OR_LATER=yes - POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes - POPPLER_HAS_OPTCONTENT=yes - CHECK_OTHER_POPPLER_VERSION=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - fi - fi +fi - if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi - # And now try another dirty thing, but this one is - # optional. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Catalog::optContent exists" >&5 -$as_echo_n "checking if Catalog::optContent exists... " >&6; } - rm -f testpoppler.* - echo '#define private public' > testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo 'int main(int argc, char** argv) { return &(((Catalog*)0x8000)->optContent) == 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_HAS_OPTCONTENT=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.21 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - fi + PKG_CONFIG="" + fi - # And now we check if we have Poppler >= 0.16.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if BaseStream constructor needs 2 arguments" >&5 -$as_echo_n "checking if BaseStream constructor needs 2 arguments... " >&6; } - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo 'class TestStream: public BaseStream {' >> testpoppler.cpp - echo 'public:' >> testpoppler.cpp - echo ' TestStream() : BaseStream(0,0) {}' >> testpoppler.cpp - echo '};' >> testpoppler.cpp - echo 'int main(int argc, char** argv) { return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +fi - # And now we check if we have Poppler >= 0.20.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have Poppler >= 0.20.0" >&5 -$as_echo_n "checking if we have Poppler >= 0.20.0... " >&6; } - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo 'int main(int argc, char** argv) { setErrorCallback(0,0); return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_0_20_OR_LATER=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for POPPLER" >&5 +$as_echo_n "checking for POPPLER... " >&6; } - # And now we check if we have Poppler >= 0.23.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have Poppler >= 0.23.0" >&5 -$as_echo_n "checking if we have Poppler >= 0.23.0... " >&6; } - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo 'class TestStream: public BaseStream {' >> testpoppler.cpp - echo 'public:' >> testpoppler.cpp - echo ' TestStream() : BaseStream(0,0) {}' >> testpoppler.cpp - echo ' ~TestStream() {}' >> testpoppler.cpp - echo ' virtual BaseStream *copy() { return BaseStream::copy(); }' >> testpoppler.cpp - echo '};' >> testpoppler.cpp - echo 'int main(int argc, char** argv) { return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_0_23_OR_LATER=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi +if test -n "$PKG_CONFIG"; then + if test -n "$POPPLER_CFLAGS"; then + pkg_cv_POPPLER_CFLAGS="$POPPLER_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"poppler >= 0.23.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "poppler >= 0.23.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_POPPLER_CFLAGS=`$PKG_CONFIG --cflags "poppler >= 0.23.0" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$POPPLER_LIBS"; then + pkg_cv_POPPLER_LIBS="$POPPLER_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"poppler >= 0.23.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "poppler >= 0.23.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_POPPLER_LIBS=`$PKG_CONFIG --libs "poppler >= 0.23.0" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + POPPLER_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "poppler >= 0.23.0"` + else + POPPLER_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "poppler >= 0.23.0"` fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + # Put the nasty error message in config.log where it belongs + echo "$POPPLER_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } + POPPLER_VERSION= +elif test $pkg_failed = untried; then + POPPLER_VERSION= +else + POPPLER_CFLAGS=$pkg_cv_POPPLER_CFLAGS + POPPLER_LIBS=$pkg_cv_POPPLER_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + POPPLER_VERSION=`$PKG_CONFIG --modversion poppler` +fi + if test "$POPPLER_VERSION" != ""; then + HAVE_POPPLER=yes + POPPLER_MAJOR_VERSION=`expr $POPPLER_VERSION : '\([0-9]*\)'` + POPPLER_MINOR_VERSION=`expr $POPPLER_VERSION : '[0-9]*\.\([0-9]*\)'` + POPPLER_CFLAGS=`echo $POPPLER_CFLAGS $POPPLER_CFLAGS | sed "s/include\/poppler/include/"` fi - rm -f testpoppler.* - rm -f testpoppler else { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 $as_echo "disabled" >&6; } fi -HAVE_POPPLER=$HAVE_POPPLER - -POPPLER_HAS_OPTCONTENT=$POPPLER_HAS_OPTCONTENT - -POPPLER_BASE_STREAM_HAS_TWO_ARGS=$POPPLER_BASE_STREAM_HAS_TWO_ARGS - -POPPLER_0_20_OR_LATER=$POPPLER_0_20_OR_LATER +if test "$HAVE_POPPLER" = "yes" -a "$PDF_PLUGIN" = "no"; then + LIBS="${POPPLER_LIBS} ${LIBS}" +fi -POPPLER_0_23_OR_LATER=$POPPLER_0_23_OR_LATER +HAVE_POPPLER=$HAVE_POPPLER -POPPLER_0_58_OR_LATER=$POPPLER_0_58_OR_LATER +POPPLER_MAJOR_VERSION=$POPPLER_MAJOR_VERSION -POPPLER_0_69_OR_LATER=$POPPLER_0_69_OR_LATER +POPPLER_MINOR_VERSION=$POPPLER_MINOR_VERSION -POPPLER_INC=$POPPLER_INC +POPPLER_CFLAGS=$POPPLER_CFLAGS -POPPLER_PLUGIN_LIB=$POPPLER_PLUGIN_LIB +POPPLER_PLUGIN_LIB=$POPPLER_LIBS diff -Nru gdal-2.4.0+dfsg/configure.ac gdal-2.4.2+dfsg/configure.ac --- gdal-2.4.0+dfsg/configure.ac 2018-12-14 21:34:19.000000000 +0000 +++ gdal-2.4.2+dfsg/configure.ac 2019-06-28 11:09:58.000000000 +0000 @@ -356,6 +356,23 @@ AC_CHECK_FUNCS(statvfs64) AC_CHECK_FUNCS(getrlimit) +AC_MSG_CHECKING([for RLIMIT_AS]) +AC_TRY_COMPILE( + [ +#include +#include + ], [ + return RLIMIT_AS; + ], + [ + AC_MSG_RESULT([yes]) + AC_DEFINE_UNQUOTED(HAVE_RLIMIT_AS, 1, + [Define to 1 if you have the `RLIMIT_AS' constant.]) + ], [ + AC_MSG_RESULT([no]) +]) + + dnl Make sure at least these are checked under C++. Prototypes missing on dnl some platforms. @@ -2656,7 +2673,7 @@ if test "$NETCDF_SETTING" != "no" ; then - AC_CHECK_HEADERS([$NETCDF_INCLUDEDIR/netcdf_mem.h], [NETCDF_MEM=yes], [NETCDF_MEM=no],) + AC_CHECK_HEADERS([$NETCDF_INCLUDEDIR/netcdf_mem.h], [NETCDF_MEM=yes], [NETCDF_MEM=no], [#include <$NETCDF_INCLUDEDIR/netcdf.h>]) AC_SUBST([NETCDF_MEM], [$NETCDF_MEM]) AC_SUBST([NETCDF_ROOT], [$NETCDF_ROOT]) @@ -4493,178 +4510,35 @@ AC_ARG_WITH(poppler,[ --with-poppler[=ARG] Include poppler(for PDF) support (ARG=no(default), yes or poppler install path)],,) HAVE_POPPLER=no -POPPLER_HAS_OPTCONTENT=no -POPPLER_BASE_STREAM_HAS_TWO_ARGS=no -POPPLER_0_20_OR_LATER=no -POPPLER_0_23_OR_LATER=no -POPPLER_0_58_OR_LATER=no -POPPLER_0_69_OR_LATER=no +POPPLER_MAJOR_VERSION= +POPPLER_MINOR_VERSION= AC_MSG_CHECKING([for poppler]) if test "$with_poppler" != "no" -a "$with_poppler" != ""; then - if test "$with_poppler" = "yes" ; then - TEST_POPPLER_INC="-I/usr/include -I/usr/include/poppler" - TEST_POPPLER_LIB="-lpoppler" - else - TEST_POPPLER_INC="-I$with_poppler/include -I$with_poppler/include/poppler" - TEST_POPPLER_LIB="-L$with_poppler/lib -lpoppler" - fi - - # Check that we can accept Page::pageObj private member - rm -f testpoppler.* - echo '#define private public' > testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo 'int main(int argc, char** argv) { return &(((Page*)0x8000)->pageObj) == 0; } ' >> testpoppler.cpp - - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -o testpoppler ${TEST_POPPLER_INC} ${TEST_POPPLER_LIB} 2>&1`" ; then + PKG_PROG_PKG_CONFIG([0.21]) + PKG_CHECK_MODULES([POPPLER], [poppler >= 0.23.0], + [POPPLER_VERSION=`$PKG_CONFIG --modversion poppler`], [POPPLER_VERSION=]) + if test "$POPPLER_VERSION" != ""; then HAVE_POPPLER=yes - else - # poppler 0.23.0 needs to be linked against pthread - TEST_POPPLER_LIB="${TEST_POPPLER_LIB} -lpthread" - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -o testpoppler ${TEST_POPPLER_INC} ${TEST_POPPLER_LIB} 2>&1`" ; then - HAVE_POPPLER=yes - fi - fi - - if test "$HAVE_POPPLER" = "yes"; then - if test "$PDF_PLUGIN" = "no"; then - LIBS="${TEST_POPPLER_LIB} ${LIBS}" - fi - AC_MSG_RESULT([yes]) - POPPLER_INC=$TEST_POPPLER_INC - POPPLER_PLUGIN_LIB="${TEST_POPPLER_LIB}" - - CHECK_OTHER_POPPLER_VERSION=yes - - if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then - AC_MSG_CHECKING([if OptionalContent has API >= 0.69.0]) - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo 'int main(int argc, char** argv) {' >> testpoppler.cpp - echo 'OCGs ocg(nullptr, nullptr);' >> testpoppler.cpp - echo 'ocg.getOCGs().size();' >> testpoppler.cpp - echo 'return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_0_69_OR_LATER=yes - POPPLER_0_58_OR_LATER=yes - POPPLER_0_23_OR_LATER=yes - POPPLER_0_20_OR_LATER=yes - POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes - POPPLER_HAS_OPTCONTENT=yes - CHECK_OTHER_POPPLER_VERSION=no - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - fi - - if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then - # And now we check if we have Poppler >= 0.58.0 - AC_MSG_CHECKING([if Object does have new API (>= 0.58.0)]) - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo 'int main(int argc, char** argv) { Object o(objNull); return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_0_58_OR_LATER=yes - POPPLER_0_23_OR_LATER=yes - POPPLER_0_20_OR_LATER=yes - POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes - POPPLER_HAS_OPTCONTENT=yes - CHECK_OTHER_POPPLER_VERSION=no - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - fi - - if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then - - # And now try another dirty thing, but this one is - # optional. - AC_MSG_CHECKING([if Catalog::optContent exists]) - rm -f testpoppler.* - echo '#define private public' > testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo 'int main(int argc, char** argv) { return &(((Catalog*)0x8000)->optContent) == 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_HAS_OPTCONTENT=yes - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - - # And now we check if we have Poppler >= 0.16.0 - AC_MSG_CHECKING([if BaseStream constructor needs 2 arguments]) - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo 'class TestStream: public BaseStream {' >> testpoppler.cpp - echo 'public:' >> testpoppler.cpp - echo ' TestStream() : BaseStream(0,0) {}' >> testpoppler.cpp - echo '};' >> testpoppler.cpp - echo 'int main(int argc, char** argv) { return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes - AC_MSG_RESULT([yes]) - - # And now we check if we have Poppler >= 0.20.0 - AC_MSG_CHECKING([if we have Poppler >= 0.20.0]) - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo 'int main(int argc, char** argv) { setErrorCallback(0,0); return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_0_20_OR_LATER=yes - AC_MSG_RESULT([yes]) - - # And now we check if we have Poppler >= 0.23.0 - AC_MSG_CHECKING([if we have Poppler >= 0.23.0]) - rm -f testpoppler.* - echo '#include ' > testpoppler.cpp - echo '#include ' >> testpoppler.cpp - echo 'class TestStream: public BaseStream {' >> testpoppler.cpp - echo 'public:' >> testpoppler.cpp - echo ' TestStream() : BaseStream(0,0) {}' >> testpoppler.cpp - echo ' ~TestStream() {}' >> testpoppler.cpp - echo ' virtual BaseStream *copy() { return BaseStream::copy(); }' >> testpoppler.cpp - echo '};' >> testpoppler.cpp - echo 'int main(int argc, char** argv) { return 0; }' >> testpoppler.cpp - if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then - POPPLER_0_23_OR_LATER=yes - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - - else - AC_MSG_RESULT([no]) - fi - - else - AC_MSG_RESULT([no]) - fi - fi - else - AC_MSG_RESULT([no]) + POPPLER_MAJOR_VERSION=`expr $POPPLER_VERSION : '\([[0-9]]*\)'` + POPPLER_MINOR_VERSION=`expr $POPPLER_VERSION : '[[0-9]]*\.\([[0-9]]*\)'` + POPPLER_CFLAGS=`echo $POPPLER_CFLAGS $POPPLER_CFLAGS | sed "s/include\/poppler/include/"` fi - rm -f testpoppler.* - rm -f testpoppler else AC_MSG_RESULT([disabled]) fi +if test "$HAVE_POPPLER" = "yes" -a "$PDF_PLUGIN" = "no"; then + LIBS="${POPPLER_LIBS} ${LIBS}" +fi + AC_SUBST(HAVE_POPPLER, $HAVE_POPPLER) -AC_SUBST(POPPLER_HAS_OPTCONTENT, $POPPLER_HAS_OPTCONTENT) -AC_SUBST(POPPLER_BASE_STREAM_HAS_TWO_ARGS, $POPPLER_BASE_STREAM_HAS_TWO_ARGS) -AC_SUBST(POPPLER_0_20_OR_LATER, $POPPLER_0_20_OR_LATER) -AC_SUBST(POPPLER_0_23_OR_LATER, $POPPLER_0_23_OR_LATER) -AC_SUBST(POPPLER_0_58_OR_LATER, $POPPLER_0_58_OR_LATER) -AC_SUBST(POPPLER_0_69_OR_LATER, $POPPLER_0_69_OR_LATER) -AC_SUBST(POPPLER_INC, $POPPLER_INC) -AC_SUBST(POPPLER_PLUGIN_LIB, $POPPLER_PLUGIN_LIB) +AC_SUBST(POPPLER_MAJOR_VERSION, $POPPLER_MAJOR_VERSION) +AC_SUBST(POPPLER_MINOR_VERSION, $POPPLER_MINOR_VERSION) +AC_SUBST(POPPLER_CFLAGS, $POPPLER_CFLAGS) +AC_SUBST(POPPLER_PLUGIN_LIB, $POPPLER_LIBS) dnl --------------------------------------------------------------------------- dnl Check if libpodofo is available diff -Nru gdal-2.4.0+dfsg/data/plscenesconf.json gdal-2.4.2+dfsg/data/plscenesconf.json --- gdal-2.4.0+dfsg/data/plscenesconf.json 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/data/plscenesconf.json 2019-06-28 11:09:58.000000000 +0000 @@ -5,13 +5,18 @@ { "name": "acquired", "type": "datetime" }, { "name": "anomalous_pixels", "type": "double" }, { "name": "black_fill", "type": "double" }, + { "name": "clear_confidence_percent", "type": "double" }, + { "name": "clear_percent", "type": "double" }, { "name": "cloud_cover", "type": "double" }, + { "name": "cloud_percent", "type": "double" }, { "name": "columns", "type": "int" }, { "name": "epsg_code", "type": "int" }, { "name": "grid_cell", "type": "string" }, { "name": "ground_control", "type": "boolean" }, { "name": "gsd", "type": "double" }, + { "name": "heavy_haze_percent", "type": "double" }, { "name": "item_type", "type": "string" }, + { "name": "light_haze_percent", "type": "double" }, { "name": "origin_x", "type": "double" }, { "name": "origin_y", "type": "double" }, { "name": "pixel_resolution", "type": "double" }, @@ -19,11 +24,16 @@ { "name": "published", "type": "datetime" }, { "name": "rows", "type": "int" }, { "name": "satellite_id", "type": "string" }, + { "name": "shadow_percent", "type": "double" }, + { "name": "snow_ice_percent", "type": "double" }, + { "name": "strip_id", "type": "string" }, { "name": "sun_azimuth", "type": "double" }, { "name": "sun_elevation", "type": "double" }, { "name": "updated", "type": "datetime" }, { "name": "usable_data", "type": "double" }, - { "name": "view_angle", "type": "double" } + { "name": "view_angle", "type": "double" }, + { "name": "visible_confidence_percent", "type": "double" }, + { "name": "visible_percent", "type": "double" } ], "assets": [ "analytic", diff -Nru gdal-2.4.0+dfsg/debian/changelog gdal-2.4.2+dfsg/debian/changelog --- gdal-2.4.0+dfsg/debian/changelog 2019-02-25 19:00:00.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/changelog 2019-07-14 14:00:00.000000000 +0000 @@ -1,8 +1,38 @@ -gdal (2.4.0+dfsg-1~bionic0) bionic; urgency=medium +gdal (2.4.2+dfsg-1~bionic0) bionic; urgency=medium * No change rebuild for Bionic. - -- Angelos Tzotsos Mon, 25 Feb 2019 21:00:00 +0200 + -- Angelos Tzotsos Sun, 14 Jul 2019 16:00:00 +0200 + +gdal (2.4.2+dfsg-1) unstable; urgency=medium + + * New upstream release. + * Update gbp.conf to use --source-only-changes by default. + * Update watch file to check version directories. + * Move from experimental to unstable. + + -- Bas Couwenberg Sun, 07 Jul 2019 14:13:35 +0200 + +gdal (2.4.1+dfsg-1~exp1) experimental; urgency=medium + + * New upstream release. + * Update watch file for final releases. + * Update symbols for 2.4.1~rc1. + * Strip pre-releases from symbols version. + + -- Bas Couwenberg Fri, 22 Mar 2019 12:46:23 +0100 + +gdal (2.4.1~rc1+dfsg-1~exp1) experimental; urgency=medium + + * New upstream release candidate. + * Add -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1 to CFLAGS for PROJ 6.0.0. + * Update ogdi (build) dependencies for 4.0.0. + * Update watch file for 2.4.1 pre-releases. + * Refresh patches. + * Drop package name from lintian overrides. + * Add lintian overrides for file-references-package-build-path. + + -- Bas Couwenberg Fri, 15 Mar 2019 14:02:35 +0100 gdal (2.4.0+dfsg-1) unstable; urgency=medium diff -Nru gdal-2.4.0+dfsg/debian/control gdal-2.4.2+dfsg/debian/control --- gdal-2.4.0+dfsg/debian/control 2019-01-02 11:59:35.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/control 2019-07-07 12:07:12.000000000 +0000 @@ -34,7 +34,7 @@ libmodern-perl-perl, default-libmysqlclient-dev, libnetcdf-dev (>= 1:4.0.0), - libogdi3.2-dev, + libogdi-dev, libopenjp2-7-dev, libpcre3-dev, libpng-dev, @@ -121,7 +121,7 @@ liblzma-dev, default-libmysqlclient-dev, libnetcdf-dev, - libogdi3.2-dev, + libogdi-dev, libopenjp2-7-dev, libpcre3-dev, libpng-dev, diff -Nru gdal-2.4.0+dfsg/debian/gbp.conf gdal-2.4.2+dfsg/debian/gbp.conf --- gdal-2.4.0+dfsg/debian/gbp.conf 2019-01-02 11:59:35.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/gbp.conf 2019-07-07 12:07:18.000000000 +0000 @@ -2,7 +2,7 @@ # The default name for the upstream branch is "upstream". # Change it if the name is different (for instance, "master"). -upstream-branch = upstream +upstream-branch = upstream-2.4 # The default name for the Debian branch is "master". # Change it if the name is different (for instance, "debian/unstable"). @@ -14,3 +14,6 @@ # Always use pristine-tar. pristine-tar = True + +[buildpackage] +pbuilder-options = --source-only-changes diff -Nru gdal-2.4.0+dfsg/debian/gdal-bin.lintian-overrides gdal-2.4.2+dfsg/debian/gdal-bin.lintian-overrides --- gdal-2.4.0+dfsg/debian/gdal-bin.lintian-overrides 2018-09-27 07:23:58.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/gdal-bin.lintian-overrides 2019-07-07 12:07:12.000000000 +0000 @@ -1,12 +1,12 @@ # Man pages are automatically generated with sphinx. -gdal-bin: hyphen-used-as-minus-sign -gdal-bin: manpage-has-errors-from-man -gdal-bin: binary-without-manpage +hyphen-used-as-minus-sign +manpage-has-errors-from-man +binary-without-manpage # Breaks for python-gdal vs gdal-bin due to gdal_retile.1 collision # in pre-1.10 versions distributed in experimental. Just for safety. -gdal-bin: package-relation-with-self breaks: gdal-bin (<< 1.10.0-0~) +package-relation-with-self breaks: gdal-bin (<< 1.10.0-0~) # False positive on: "(319) 369-3131" -gdal-bin: copyright-year-in-future 3131 * +copyright-year-in-future 3131 * diff -Nru gdal-2.4.0+dfsg/debian/gdal-data.lintian-overrides gdal-2.4.2+dfsg/debian/gdal-data.lintian-overrides --- gdal-2.4.0+dfsg/debian/gdal-data.lintian-overrides 2018-09-27 07:23:58.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/gdal-data.lintian-overrides 2019-07-07 12:07:12.000000000 +0000 @@ -1,3 +1,3 @@ # False positive on: "(319) 369-3131" -gdal-data: copyright-year-in-future 3131 * +copyright-year-in-future 3131 * diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.lintian-overrides gdal-2.4.2+dfsg/debian/libgdal20.lintian-overrides --- gdal-2.4.0+dfsg/debian/libgdal20.lintian-overrides 2018-09-27 07:23:58.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.lintian-overrides 2019-07-07 12:07:12.000000000 +0000 @@ -1,6 +1,9 @@ # False positive on: {136, "Socialist Republic of Viet Nam"}, -libgdal20: spelling-error-in-binary * Nam Name +spelling-error-in-binary * Nam Name # False positive on: "(319) 369-3131" -libgdal20: copyright-year-in-future 3131 * +copyright-year-in-future 3131 * + +# Cannot easily be fixed +file-references-package-build-path * diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.amd64 gdal-2.4.2+dfsg/debian/libgdal20.symbols.amd64 --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.amd64 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.amd64 2019-07-07 12:07:12.000000000 +0000 @@ -3669,6 +3669,8 @@ (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator > const&, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator > const&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned long)@Base" 2.4.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned long)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned long, unsigned long const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned long)@Base" 2.4.0 1 @@ -3721,6 +3723,7 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"std::pair* std::__uninitialized_copy::__uninit_copy*>, std::pair*>(std::move_iterator*>, std::move_iterator*>, std::pair*)@Base" 2.3.2 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 @@ -3748,8 +3751,6 @@ (c++)"std::pair::~pair()@Base" 1.9.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3807,7 +3808,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3821,6 +3821,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3833,13 +3834,12 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.1.3 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.0 1 @@ -3902,7 +3902,6 @@ (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, bool>, std::allocator, bool> > >::_M_realloc_insert, bool> >(__gnu_cxx::__normal_iterator, bool>*, std::vector, bool>, std::allocator, bool> > > >, std::pair, bool>&&)@Base" 2.2.2 1 - (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert const&>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair const&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 @@ -4020,6 +4019,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4057,6 +4057,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&)@Base" 1.10.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.8.0 1 @@ -4194,11 +4195,12 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 @@ -4206,7 +4208,6 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 @@ -4215,7 +4216,6 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.0.1 1 @@ -4223,6 +4223,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 @@ -4240,9 +4241,11 @@ (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase(std::_Rb_tree_node const, char*> >*)@Base" 1.10.1 1 (c++)"std::pair >, bool> std::_Rb_tree, std::pair, std::_Identity >, std::less >, std::allocator > >::_M_insert_unique >(std::pair&&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::pair, std::_Identity >, std::less >, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator const, std::vector > > > std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector > > >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector > > >, std::pair const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_erase(std::_Rb_tree_node const, std::vector > > >*)@Base" 1.11.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::find(std::pair const&)@Base" 2.1.0 1 @@ -4256,10 +4259,12 @@ (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, OGRCoordinateTransformation*> >, std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_erase(std::_Rb_tree_node const, OGRCoordinateTransformation*> >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator const, std::vector, bool>, std::allocator, bool> > > > > std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >* std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_copy, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node>(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_erase(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_erase(std::_Rb_tree_node const, int> >*)@Base" 2.0.1 1 @@ -4284,6 +4289,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.11.0 1 @@ -4304,6 +4310,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > > >, int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.1 1 @@ -4311,6 +4318,7 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.8.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.8.0 1 @@ -4357,11 +4365,16 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4369,6 +4382,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4380,7 +4394,6 @@ (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.1.0 1 (c++)"std::__detail::_Hash_node, std::allocator >, true>* std::__detail::_Hashtable_alloc, std::allocator >, true> > >::_M_allocate_node, std::allocator > const&>(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 (c++)"std::__detail::_Map_base, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.0 1 - (c++)"bool std::operator< (std::pair const&, std::pair const&)@Base" 2.3.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, char const*)@Base" 2.1.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.2.0 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.arm64 gdal-2.4.2+dfsg/debian/libgdal20.symbols.arm64 --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.arm64 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.arm64 2019-07-07 12:07:12.000000000 +0000 @@ -3669,6 +3669,8 @@ (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator > const&, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator > const&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned long)@Base" 2.4.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned long)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned long, unsigned long const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned long)@Base" 2.4.0 1 @@ -3721,6 +3723,7 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"std::pair* std::__uninitialized_copy::__uninit_copy*>, std::pair*>(std::move_iterator*>, std::move_iterator*>, std::pair*)@Base" 2.3.2 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.10.1 1 @@ -3748,8 +3751,6 @@ (c++)"std::pair::~pair()@Base" 1.10.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3807,7 +3808,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3821,6 +3821,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3833,13 +3834,12 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.1.3 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.0 1 @@ -3902,7 +3902,6 @@ (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, bool>, std::allocator, bool> > >::_M_realloc_insert, bool> >(__gnu_cxx::__normal_iterator, bool>*, std::vector, bool>, std::allocator, bool> > > >, std::pair, bool>&&)@Base" 2.2.2 1 - (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert const&>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair const&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 @@ -4020,6 +4019,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4057,6 +4057,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&)@Base" 1.10.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 @@ -4194,11 +4195,12 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 @@ -4206,7 +4208,6 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 @@ -4215,7 +4216,6 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.0.1 1 @@ -4223,6 +4223,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 @@ -4240,9 +4241,11 @@ (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase(std::_Rb_tree_node const, char*> >*)@Base" 1.10.1 1 (c++)"std::pair >, bool> std::_Rb_tree, std::pair, std::_Identity >, std::less >, std::allocator > >::_M_insert_unique >(std::pair&&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::pair, std::_Identity >, std::less >, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator const, std::vector > > > std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector > > >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.11.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector > > >, std::pair const&)@Base" 1.11.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_erase(std::_Rb_tree_node const, std::vector > > >*)@Base" 1.11.1 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::find(std::pair const&)@Base" 2.1.0 1 @@ -4256,10 +4259,12 @@ (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, OGRCoordinateTransformation*> >, std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_erase(std::_Rb_tree_node const, OGRCoordinateTransformation*> >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator const, std::vector, bool>, std::allocator, bool> > > > > std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >* std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_copy, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node>(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_erase(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_erase(std::_Rb_tree_node const, int> >*)@Base" 2.0.1 1 @@ -4284,6 +4289,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.11.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.11.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.11.1 1 @@ -4304,6 +4310,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > > >, int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.1 1 @@ -4311,6 +4318,7 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 @@ -4357,11 +4365,16 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4369,6 +4382,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4380,7 +4394,6 @@ (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.1.0 1 (c++)"std::__detail::_Hash_node, std::allocator >, true>* std::__detail::_Hashtable_alloc, std::allocator >, true> > >::_M_allocate_node, std::allocator > const&>(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 (c++)"std::__detail::_Map_base, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.0 1 - (c++)"bool std::operator< (std::pair const&, std::pair const&)@Base" 2.3.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, char const*)@Base" 2.1.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.2.0 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.armel gdal-2.4.2+dfsg/debian/libgdal20.symbols.armel --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.armel 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.armel 2019-07-07 12:07:12.000000000 +0000 @@ -3667,6 +3667,8 @@ (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned int)@Base" 2.4.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned int, unsigned int const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned int)@Base" 2.4.0 1 @@ -3721,8 +3723,8 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)1>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)1>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)1>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 - (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.2.0 1 @@ -3735,11 +3737,11 @@ (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer* const&)@Base" 2.2.2 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer*&&)@Base" 2.2.0 1 - (c++)"std::map, std::vector, bool>, std::allocator, bool> > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::operator[](std::pair const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](int const&)@Base" 2.4.1 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::operator[](int const&)@Base" 2.1.0 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 @@ -3747,8 +3749,6 @@ (c++)"std::pair::~pair()@Base" 1.9.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3769,6 +3769,7 @@ (c++)"std::vector >::~vector()@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CADVector const&)@Base" 2.3.0 1 (c++)"std::vector >::reserve(unsigned int)@Base" 2.3.0 1 + (c++)"std::vector >::push_back(CADVector const&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(CPLString&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 @@ -3804,7 +3805,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3818,6 +3818,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3830,13 +3831,12 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.1.3 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.0 1 @@ -4010,6 +4010,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4131,9 +4132,9 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator >&&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator >&&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4148,16 +4149,17 @@ (c++)"std::_Rb_tree_iterator, std::allocator > const, long long> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, long long> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, long long> >*)@Base" 2.3.0 1 + (c++)"std::_Rb_tree_iterator > > > std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(OGRFeature* const&)@Base" 2.1.3 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.1.3 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4165,9 +4167,9 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 @@ -4236,6 +4238,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.11.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4250,6 +4253,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.1.1 1 @@ -4290,6 +4294,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.1 1 @@ -4302,6 +4307,9 @@ (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::find(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::find(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.armhf gdal-2.4.2+dfsg/debian/libgdal20.symbols.armhf --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.armhf 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.armhf 2019-07-07 12:07:12.000000000 +0000 @@ -3667,6 +3667,8 @@ (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned int)@Base" 2.4.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned int, unsigned int const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned int)@Base" 2.4.0 1 @@ -3719,8 +3721,8 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 - (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.2.0 1 @@ -3733,11 +3735,11 @@ (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer* const&)@Base" 2.2.2 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer*&&)@Base" 2.2.0 1 - (c++)"std::map, std::vector, bool>, std::allocator, bool> > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::operator[](std::pair const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](int const&)@Base" 2.4.1 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::operator[](int const&)@Base" 2.1.0 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 @@ -3745,8 +3747,6 @@ (c++)"std::pair::~pair()@Base" 1.9.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3802,7 +3802,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3816,6 +3815,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3828,13 +3828,12 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.1.3 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.0 1 @@ -4008,6 +4007,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4129,9 +4129,9 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator >&&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator >&&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4146,16 +4146,17 @@ (c++)"std::_Rb_tree_iterator, std::allocator > const, long long> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, long long> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, long long> >*)@Base" 2.3.0 1 + (c++)"std::_Rb_tree_iterator > > > std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(OGRFeature* const&)@Base" 2.1.3 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.1.3 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4163,9 +4164,9 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 @@ -4234,6 +4235,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.11.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4248,6 +4250,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.1.1 1 @@ -4288,6 +4291,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.1 1 @@ -4300,6 +4304,9 @@ (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::find(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::find(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.i386 gdal-2.4.2+dfsg/debian/libgdal20.symbols.i386 --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.i386 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.i386 2019-07-07 12:07:12.000000000 +0000 @@ -3667,6 +3667,8 @@ (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned int)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned int, unsigned int const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned int)@Base" 2.4.0 1 @@ -3719,6 +3721,7 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 @@ -3737,6 +3740,7 @@ (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](int const&)@Base" 2.4.1 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::operator[](int const&)@Base" 2.1.0 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 @@ -3744,8 +3748,6 @@ (c++)"std::pair::~pair()@Base" 1.9.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3801,7 +3803,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3815,6 +3816,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3827,13 +3829,12 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLayer* const&)@Base" 2.2.2 1 @@ -4005,6 +4006,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4124,6 +4126,7 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4138,16 +4141,17 @@ (c++)"std::_Rb_tree_iterator, std::allocator > const, long long> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, long long> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, long long> >*)@Base" 2.3.0 1 + (c++)"std::_Rb_tree_iterator > > > std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(OGRFeature* const&)@Base" 2.1.3 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.1.3 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4155,9 +4159,9 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 @@ -4180,7 +4184,6 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRSpatialReference const* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase_aux(std::_Rb_tree_const_iterator const, char*> >)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator const, char*> > std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, char*> >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::find(std::pair const&)@Base" 1.10.1 1 @@ -4239,6 +4242,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.1.1 1 @@ -4288,6 +4292,8 @@ (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.kfreebsd-amd64 gdal-2.4.2+dfsg/debian/libgdal20.symbols.kfreebsd-amd64 --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.kfreebsd-amd64 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.kfreebsd-amd64 2019-07-07 12:07:12.000000000 +0000 @@ -3669,6 +3669,8 @@ (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator > const&, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator > const&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned long)@Base" 2.4.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned long)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned long, unsigned long const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned long)@Base" 2.4.0 1 @@ -3721,6 +3723,7 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"std::pair* std::__uninitialized_copy::__uninit_copy*>, std::pair*>(std::move_iterator*>, std::move_iterator*>, std::pair*)@Base" 2.3.2 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.10.0 1 @@ -3748,8 +3751,6 @@ (c++)"std::pair::~pair()@Base" 1.10.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3807,7 +3808,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3821,6 +3821,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3833,13 +3834,12 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.3.2 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.1.3 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 @@ -3902,7 +3902,6 @@ (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.2 1 (c++)"void std::vector, bool>, std::allocator, bool> > >::_M_realloc_insert, bool> >(__gnu_cxx::__normal_iterator, bool>*, std::vector, bool>, std::allocator, bool> > > >, std::pair, bool>&&)@Base" 2.2.2 1 - (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert const&>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair const&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 @@ -4020,6 +4019,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4057,6 +4057,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&)@Base" 1.10.0 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.0 1 @@ -4194,11 +4195,12 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 @@ -4206,7 +4208,6 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.2 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 @@ -4215,7 +4216,6 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.0.1 1 @@ -4223,6 +4223,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 @@ -4240,9 +4241,11 @@ (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase(std::_Rb_tree_node const, char*> >*)@Base" 1.10.0 1 (c++)"std::pair >, bool> std::_Rb_tree, std::pair, std::_Identity >, std::less >, std::allocator > >::_M_insert_unique >(std::pair&&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::pair, std::_Identity >, std::less >, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator const, std::vector > > > std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector > > >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector > > >, std::pair const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_erase(std::_Rb_tree_node const, std::vector > > >*)@Base" 1.11.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::find(std::pair const&)@Base" 2.1.0 1 @@ -4256,10 +4259,12 @@ (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, OGRCoordinateTransformation*> >, std::pair const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_erase(std::_Rb_tree_node const, OGRCoordinateTransformation*> >*)@Base" 1.10.0 1 + (c++)"std::_Rb_tree_iterator const, std::vector, bool>, std::allocator, bool> > > > > std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >* std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_copy, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node>(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_erase(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_erase(std::_Rb_tree_node const, int> >*)@Base" 2.0.1 1 @@ -4284,6 +4289,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.11.0 1 @@ -4304,6 +4310,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > > >, int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.0 1 @@ -4311,6 +4318,7 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.0 1 @@ -4357,11 +4365,16 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.0 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4369,6 +4382,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4380,7 +4394,6 @@ (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.1.0 1 (c++)"std::__detail::_Hash_node, std::allocator >, true>* std::__detail::_Hashtable_alloc, std::allocator >, true> > >::_M_allocate_node, std::allocator > const&>(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 (c++)"std::__detail::_Map_base, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.0 1 - (c++)"bool std::operator< (std::pair const&, std::pair const&)@Base" 2.3.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, char const*)@Base" 2.1.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.2.0 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.kfreebsd-i386 gdal-2.4.2+dfsg/debian/libgdal20.symbols.kfreebsd-i386 --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.kfreebsd-i386 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.kfreebsd-i386 2019-07-07 12:07:12.000000000 +0000 @@ -3667,6 +3667,8 @@ (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned int)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned int, unsigned int const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned int)@Base" 2.4.0 1 @@ -3719,6 +3721,7 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.1.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.10.0 1 @@ -3737,6 +3740,7 @@ (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](int const&)@Base" 2.4.1 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::operator[](int const&)@Base" 2.1.0 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 @@ -3744,8 +3748,6 @@ (c++)"std::pair::~pair()@Base" 1.10.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3801,7 +3803,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3815,6 +3816,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3827,13 +3829,12 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.3.2 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLayer* const&)@Base" 2.2.2 1 @@ -4005,6 +4006,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4124,6 +4126,7 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4138,16 +4141,17 @@ (c++)"std::_Rb_tree_iterator, std::allocator > const, long long> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, long long> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, long long> >*)@Base" 2.3.2 1 + (c++)"std::_Rb_tree_iterator > > > std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(OGRFeature* const&)@Base" 2.1.3 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.1.3 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4155,9 +4159,9 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.2 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 @@ -4180,7 +4184,6 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRSpatialReference const* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase_aux(std::_Rb_tree_const_iterator const, char*> >)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator const, char*> > std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, char*> >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::find(std::pair const&)@Base" 1.10.0 1 @@ -4239,6 +4242,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.1.1 1 @@ -4288,6 +4292,8 @@ (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.0 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.0 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.mips gdal-2.4.2+dfsg/debian/libgdal20.symbols.mips --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.mips 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.mips 2019-07-07 12:07:12.000000000 +0000 @@ -3667,6 +3667,8 @@ (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned int)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned int, unsigned int const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned int)@Base" 2.4.0 1 @@ -3720,6 +3722,7 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 @@ -3734,11 +3737,11 @@ (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer* const&)@Base" 2.2.2 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer*&&)@Base" 2.2.0 1 - (c++)"std::map, std::vector, bool>, std::allocator, bool> > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::operator[](std::pair const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](int const&)@Base" 2.4.1 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::operator[](int const&)@Base" 2.1.0 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 @@ -3746,8 +3749,6 @@ (c++)"std::pair::~pair()@Base" 1.9.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3803,7 +3804,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3817,6 +3817,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3829,13 +3830,12 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLayer* const&)@Base" 2.2.2 1 @@ -4005,6 +4005,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4124,6 +4125,7 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4138,16 +4140,17 @@ (c++)"std::_Rb_tree_iterator, std::allocator > const, long long> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, long long> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, long long> >*)@Base" 2.3.0 1 + (c++)"std::_Rb_tree_iterator > > > std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(OGRFeature* const&)@Base" 2.1.3 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.1.3 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4155,9 +4158,9 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 @@ -4180,7 +4183,6 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRSpatialReference const* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase_aux(std::_Rb_tree_const_iterator const, char*> >)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator const, char*> > std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, char*> >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::find(std::pair const&)@Base" 1.10.1 1 @@ -4239,6 +4241,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.1.1 1 @@ -4288,6 +4291,8 @@ (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.mips64el gdal-2.4.2+dfsg/debian/libgdal20.symbols.mips64el --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.mips64el 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.mips64el 2019-07-07 12:07:12.000000000 +0000 @@ -48,6 +48,7 @@ (c++)"PamHistogramToXMLTree(double, double, int, unsigned long long*, int, int)@Base" 2.0.1 1 (c++)"VSICreateGZipWritable(VSIVirtualHandle*, int, int)@Base" 2.0.1 1 (c++)"CPLParseRFC822DateTime(char const*, int*, int*, int*, int*, int*, int*, int*, int*)@Base" 2.3.0 1 + (c++)"CPLQuotedSQLIdentifier(char const*)@Base" 2.4.1 1 (c++)"OGRGeometryFromHexEWKB(char const*, int*, int)@Base" 2.0.1 1 (c++)"OGRPGCommonLaunderName(char const*, char const*)@Base" 2.0.1 1 (c++)"OGRParseRFC822DateTime(char const*, OGRField*)@Base" 2.0.1 1 @@ -140,6 +141,7 @@ (c++)"GDALDriver::SetMetadataItem(char const*, char const*, char const*)@Base" 2.0.1 1 (c++)"GDALDriver::DefaultCopyFiles(char const*, char const*)@Base" 2.0.1 1 (c++)"GDALDriver::DefaultCopyMasks(GDALDataset*, GDALDataset*, int)@Base" 2.0.1 1 + (c++)"GDALDriver::DefaultCopyMasks(GDALDataset*, GDALDataset*, int, char const* const*, int (*)(double, char const*, void*), void*)@Base" 2.4.1 1 (c++)"GDALDriver::DefaultCreateCopy(char const*, GDALDataset*, int, char**, int (*)(double, char const*, void*), void*)@Base" 2.0.1 1 (c++)"GDALDriver::Create(char const*, int, int, int, GDALDataType, char**)@Base" 2.0.1 1 (c++)"GDALDriver::Delete(char const*)@Base" 2.0.1 1 @@ -336,6 +338,7 @@ (c++)"VRTDataset::IBuildOverviews(char const*, int, int*, int, int*, int (*)(double, char const*, void*), void*)@Base" 2.1.0 1 (c++)"VRTDataset::SetGeoTransform(double*)@Base" 2.0.1 1 (c++)"VRTDataset::SetMetadataItem(char const*, char const*, char const*)@Base" 2.0.1 1 + (c++)"VRTDataset::ExpandProxyBands()@Base" 2.4.1 1 (c++)"VRTDataset::GetGCPProjection()@Base" 2.0.1 1 (c++)"VRTDataset::GetProjectionRef()@Base" 2.0.1 1 (c++)"VRTDataset::BuildVirtualOverviews()@Base" 2.1.0 1 @@ -442,7 +445,6 @@ (c++)"GDALDataset::ProcessSQLAlterTableAlterColumn(char const*)@Base" 2.0.1 1 (c++)"GDALDataset::ProcessSQLAlterTableRenameColumn(char const*)@Base" 2.0.1 1 (c++)"GDALDataset::ValidateRasterIOOrAdviseReadParameters(char const*, int*, int, int, int, int, int, int, int, int*)@Base" 2.0.1 1 - (c++)"GDALDataset::Init(bool)@Base" 2.2.0 1 (c++)"GDALDataset::Bands::Iterator::Iterator(GDALDataset*, bool)@Base" 2.3.0 1 (c++)"GDALDataset::Bands::Iterator::Iterator(GDALDataset*, bool)@Base" 2.3.0 1 (c++)"GDALDataset::Bands::Iterator::~Iterator()@Base" 2.3.0 1 @@ -715,7 +717,6 @@ (c++)"CPLLockHolder::CPLLockHolder(_CPLLock**, CPLLockType, char const*, int)@Base" 2.0.1 1 (c++)"CPLLockHolder::~CPLLockHolder()@Base" 2.0.1 1 (c++)"CPLLockHolder::~CPLLockHolder()@Base" 2.0.1 1 - (c++)"CPLStringList::Initialize()@Base" 2.0.1 1 (c++)"CPLStringList::AddNameValue(char const*, char const*)@Base" 2.0.1 1 (c++)"CPLStringList::SetNameValue(char const*, char const*)@Base" 2.0.1 1 (c++)"CPLStringList::MakeOurOwnCopy()@Base" 2.0.1 1 @@ -894,10 +895,10 @@ (c++)"RawRasterBand::Write(void*, unsigned long, unsigned long)@Base" 2.0.1 1 (c++)"RawRasterBand::IRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*)@Base" 2.0.1 1 (c++)"RawRasterBand::SetAccess(GDALAccess)@Base" 2.0.1 1 - (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, void*, unsigned long long, int, int, GDALDataType, int, int, int)@Base" 2.0.1 1 - (c++)"RawRasterBand::RawRasterBand(void*, unsigned long long, int, int, GDALDataType, int, int, int, int, int)@Base" 2.0.1 1 - (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, void*, unsigned long long, int, int, GDALDataType, int, int, int)@Base" 2.0.1 1 - (c++)"RawRasterBand::RawRasterBand(void*, unsigned long long, int, int, GDALDataType, int, int, int, int, int)@Base" 2.0.1 1 + (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, _IO_FILE*, unsigned long long, int, int, GDALDataType, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(_IO_FILE*, unsigned long long, int, int, GDALDataType, int, int, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, _IO_FILE*, unsigned long long, int, int, GDALDataType, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(_IO_FILE*, unsigned long long, int, int, GDALDataType, int, int, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 2.0.1 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 2.0.1 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 2.0.1 1 @@ -1046,6 +1047,7 @@ (c++)"GDALRasterBand::GetNoDataValue(int*)@Base" 2.0.1 1 (c++)"GDALRasterBand::LeaveReadWrite()@Base" 2.0.1 1 (c++)"GDALRasterBand::SetNoDataValue(double)@Base" 2.0.1 1 + (c++)"GDALRasterBand::SetValidPercent(unsigned long long, unsigned long long)@Base" 2.4.1 1 (c++)"GDALRasterBand::GetCategoryNames()@Base" 2.0.1 1 (c++)"GDALRasterBand::GetOverviewCount()@Base" 2.0.1 1 (c++)"GDALRasterBand::OverviewRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*)@Base" 2.0.1 1 @@ -1074,7 +1076,6 @@ (c++)"GDALRasterBand::GetRasterSampleOverview(unsigned long long)@Base" 2.0.1 1 (c++)"GDALRasterBand::GetIndexColorTranslationTo(GDALRasterBand*, unsigned char*, int*)@Base" 2.0.1 1 (c++)"GDALRasterBand::Fill(double, double)@Base" 2.0.1 1 - (c++)"GDALRasterBand::Init(int)@Base" 2.1.0 1 (c++)"GDALRasterBand::GetBand()@Base" 2.0.1 1 (c++)"GDALRasterBand::GetScale(int*)@Base" 2.0.1 1 (c++)"GDALRasterBand::GetXSize()@Base" 2.0.1 1 @@ -1645,6 +1646,7 @@ (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 2.0.1 1 (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 2.0.1 1 (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 2.0.1 1 + (c++)"VRTWarpedDataset::FlushCache()@Base" 2.4.1 1 (c++)"VRTWarpedDataset::Initialize(void*)@Base" 2.0.1 1 (c++)"VRTWarpedDataset::GetFileList()@Base" 2.0.1 1 (c++)"VRTWarpedDataset::ProcessBlock(int, int)@Base" 2.0.1 1 @@ -1732,6 +1734,7 @@ (c++)"GDALWarpOperation::CreateDestinationBuffer(int, int, int*)@Base" 2.3.0 1 (c++)"GDALWarpOperation::CollectChunkListInternal(int, int, int, int)@Base" 2.3.0 1 (c++)"GDALWarpOperation::DestroyDestinationBuffer(void*)@Base" 2.3.0 1 + (c++)"GDALWarpOperation::ComputeSourceWindowStartingFromSource(int, int, int, int, double*, double*, double*, double*)@Base" 2.4.1 1 (c++)"GDALWarpOperation::GDALWarpOperation()@Base" 2.0.1 1 (c++)"GDALWarpOperation::GDALWarpOperation()@Base" 2.0.1 1 (c++)"GDALWarpOperation::~GDALWarpOperation()@Base" 2.0.1 1 @@ -1930,13 +1933,20 @@ (c++)"OGRMultiLineString::~OGRMultiLineString()@Base" 2.0.1 1 (c++)"OGRMultiLineString::~OGRMultiLineString()@Base" 2.0.1 1 (c++)"OGRMultiLineString::operator=(OGRMultiLineString const&)@Base" 2.1.0 1 + (c++)"CADDictionaryRecord::CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::GetNextJob(CPLWorkerThread*)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::SubmitJobs(void (*)(void*), std::vector > const&)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::WaitCompletion(int)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::DeclareJobFinished()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::WorkerThreadFunction(void*)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::Setup(int, void (*)(void*), void**)@Base" 2.1.0 1 + (c++)"CPLWorkerThreadPool::Setup(int, void (*)(void*), void**, bool)@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::SubmitJob(void (*)(void*), void*)@Base" 2.1.0 1 + (c++)"CPLWorkerThreadPool::WaitEvent()@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::CPLWorkerThreadPool()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::CPLWorkerThreadPool()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::~CPLWorkerThreadPool()@Base" 2.1.0 1 @@ -2138,6 +2148,7 @@ (c++)"GDALAllValidMaskBand::IReadBlock(int, int, void*)@Base" 2.0.1 1 (c++)"GDALAllValidMaskBand::GetMaskBand()@Base" 2.0.1 1 (c++)"GDALAllValidMaskBand::GetMaskFlags()@Base" 2.0.1 1 + (c++)"GDALAllValidMaskBand::ComputeStatistics(int, double*, double*, double*, double*, int (*)(double, char const*, void*), void*)@Base" 2.4.1 1 (c++)"GDALAllValidMaskBand::GDALAllValidMaskBand(GDALRasterBand*)@Base" 2.0.1 1 (c++)"GDALAllValidMaskBand::GDALAllValidMaskBand(GDALRasterBand*)@Base" 2.0.1 1 (c++)"GDALAllValidMaskBand::~GDALAllValidMaskBand()@Base" 2.0.1 1 @@ -2177,6 +2188,7 @@ (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 2.0.1 1 (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 2.0.1 1 (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 2.0.1 1 + (c++)"GDALProxyPoolDataset::AddSrcBand(int, GDALDataType, int, int)@Base" 2.4.1 1 (c++)"GDALProxyPoolDataset::FlushCache()@Base" 2.3.0 1 (c++)"GDALProxyPoolDataset::GetMetadata(char const*)@Base" 2.0.1 1 (c++)"GDALProxyPoolDataset::SetProjection(char const*)@Base" 2.0.1 1 @@ -2330,10 +2342,12 @@ (c++)"VSIFilesystemHandler::SupportsSparseFiles(char const*)@Base" 2.2.0 1 (c++)"VSIFilesystemHandler::HasOptimizedReadMultiRange(char const*)@Base" 2.3.0 1 (c++)"VSIFilesystemHandler::Open(char const*, char const*)@Base" 2.1.0 1 + (c++)"VSIFilesystemHandler::Sync(char const*, char const*, char const* const*, int (*)(double, char const*, void*), void*, char***)@Base" 2.4.1 1 (c++)"VSIFilesystemHandler::Mkdir(char const*, long)@Base" 2.0.1 1 (c++)"VSIFilesystemHandler::Rmdir(char const*)@Base" 2.0.1 1 (c++)"VSIFilesystemHandler::Rename(char const*, char const*)@Base" 2.0.1 1 (c++)"VSIFilesystemHandler::Unlink(char const*)@Base" 2.0.1 1 + (c++)"VSIFilesystemHandler::OpenDir(char const*, int, char const* const*)@Base" 2.4.1 1 (c++)"VSIFilesystemHandler::ReadDir(char const*)@Base" 2.0.1 1 (c++)"VSIFilesystemHandler::ReadDirEx(char const*, int)@Base" 2.1.0 1 (c++)"CPLConfigOptionSetter::CPLConfigOptionSetter(char const*, char const*, bool)@Base" 2.3.0 1 @@ -2380,7 +2394,7 @@ (c++)"CPLJSonStreamingParser::SetMaxStringSize(unsigned long)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::StartArrayMember()@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::StartObjectMember(char const*, unsigned long)@Base" 2.3.0 1 - (c++)"CPLJSonStreamingParser::EmitUnexpectedChar(char)@Base" 2.3.0 1 + (c++)"CPLJSonStreamingParser::EmitUnexpectedChar(char, char const*)@Base" 2.4.1 1 (c++)"CPLJSonStreamingParser::GetSerializedString[abi:cxx11](char const*)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::CheckAndEmitTrueFalseOrNull(char)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::Null()@Base" 2.3.0 1 @@ -2449,7 +2463,6 @@ (c++)"GDALProxyPoolRasterBand::RefUnderlyingRasterBand()@Base" 2.0.1 1 (c++)"GDALProxyPoolRasterBand::AddSrcMaskBandDescription(GDALDataType, int, int)@Base" 2.0.1 1 (c++)"GDALProxyPoolRasterBand::UnrefUnderlyingRasterBand(GDALRasterBand*)@Base" 2.0.1 1 - (c++)"GDALProxyPoolRasterBand::Init()@Base" 2.0.1 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, GDALRasterBand*)@Base" 2.0.1 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, int, GDALDataType, int, int)@Base" 2.0.1 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, GDALRasterBand*)@Base" 2.0.1 1 @@ -2541,15 +2554,15 @@ (c++)"OGRDefaultConstGeometryVisitor::~OGRDefaultConstGeometryVisitor()@Base" 2.3.0 1 (c++)"GDALDefaultRasterAttributeTable::SetRowCount(int)@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::CreateColumn(char const*, GDALRATFieldType, GDALRATFieldUsage)@Base" 2.0.1 1 + (c++)"GDALDefaultRasterAttributeTable::SetTableType(GDALRATTableType)@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::AnalyseColumns()@Base" 2.0.1 1 + (c++)"GDALDefaultRasterAttributeTable::RemoveStatistics()@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::SetLinearBinning(double, double)@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::ChangesAreWrittenToFile()@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, char const*)@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, double)@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, int)@Base" 2.0.1 1 - (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable(GDALDefaultRasterAttributeTable const&)@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable()@Base" 2.0.1 1 - (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable(GDALDefaultRasterAttributeTable const&)@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable()@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::~GDALDefaultRasterAttributeTable()@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::~GDALDefaultRasterAttributeTable()@Base" 2.0.1 1 @@ -2569,6 +2582,9 @@ (c++)"CADRay::~CADRay()@Base" 2.3.0 1 (c++)"CADRay::~CADRay()@Base" 2.3.0 1 (c++)"CADRay::~CADRay()@Base" 2.3.0 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 (c++)"CADFile::ReadTables(CADFile::OpenOptions)@Base" 2.2.0 1 (c++)"CADFile::isReadingUnsupportedGeometries()@Base" 2.2.0 1 (c++)"CADFile::GetLayer(unsigned long)@Base" 2.2.0 1 @@ -2963,8 +2979,8 @@ (c++)"S57Writer::WriteCompleteFeature(OGRFeature*)@Base" 2.0.1 1 (c++)"S57Writer::Close()@Base" 2.0.1 1 (c++)"S57Writer::WriteATTF(DDFRecord*, OGRFeature*)@Base" 2.0.1 1 - (c++)"S57Writer::WriteDSID(int, int, char const*, char const*, char const*, char const*, char const*, char const*, int, char const*, int, int, int, int, int, int)@Base" 2.0.1 1 - (c++)"S57Writer::WriteDSPM(int, int, int, int)@Base" 2.0.1 1 + (c++)"S57Writer::WriteDSID(int, int, char const*, char const*, char const*, char const*, char const*, char const*, int, char const*, int, int, int, int, int, int, int, int)@Base" 2.4.1 1 + (c++)"S57Writer::WriteDSPM(int, int, int, int, int, int)@Base" 2.4.1 1 (c++)"S57Writer::S57Writer()@Base" 2.0.1 1 (c++)"S57Writer::S57Writer()@Base" 2.0.1 1 (c++)"S57Writer::~S57Writer()@Base" 2.0.1 1 @@ -3229,6 +3245,7 @@ (c++)"OGRFeatureDefn::GetGeomFieldIndex(char const*) const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::IsGeometryIgnored() const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::ComputeMapForSetFrom(OGRFeatureDefn const*, bool) const@Base" 2.3.0 1 + (c++)"OGRFeatureDefn::GetFieldIndexCaseSensitive(char const*) const@Base" 2.4.1 1 (c++)"OGRFeatureDefn::Clone() const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::IsSame(OGRFeatureDefn const*) const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::GetName() const@Base" 2.3.0 1 @@ -3386,6 +3403,7 @@ (c++)"OGRMultiLineString::hasCurveGeometry(int) const@Base" 2.0.1 1 (c++)"OGRMultiLineString::isCompatibleSubType(OGRwkbGeometryType) const@Base" 2.0.1 1 (c++)"OGRMultiLineString::accept(IOGRConstGeometryVisitor*) const@Base" 2.3.0 1 + (c++)"CADDictionaryRecord::getType() const@Base" 2.4.1 1 (c++)"OGRSpatialReference::GetTOWGS84(double*, int) const@Base" 2.0.1 1 (c++)"OGRSpatialReference::GetUTMZone(int*) const@Base" 2.0.1 1 (c++)"OGRSpatialReference::IsCompound() const@Base" 2.0.1 1 @@ -3499,6 +3517,7 @@ (c++)"OGRGeometryUniquePtrDeleter::operator()(OGRGeometry*) const@Base" 2.3.0 1 (c++)"GDALDefaultRasterAttributeTable::GetRowCount() const@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::GetNameOfCol(int) const@Base" 2.0.1 1 + (c++)"GDALDefaultRasterAttributeTable::GetTableType() const@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::GetTypeOfCol(int) const@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::GetColOfUsage(GDALRATFieldUsage) const@Base" 2.0.1 1 (c++)"GDALDefaultRasterAttributeTable::GetRowOfValue(double) const@Base" 2.0.1 1 @@ -3633,6 +3652,7 @@ (c++)"CPLString::ifind(std::__cxx11::basic_string, std::allocator > const&, unsigned long) const@Base" 2.0.1 1 (c++)"CPLString::endsWith(std::__cxx11::basic_string, std::allocator > const&) const@Base" 2.3.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_find_before_node(unsigned long, std::__cxx11::basic_string, std::allocator > const&, unsigned long) const@Base" 2.3.0 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_find_before_node(unsigned long, std::__cxx11::basic_string, std::allocator > const&, unsigned long) const@Base" 2.4.1 1 (c++)"std::ctype::do_widen(char) const@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::find(CPLString const&) const@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&) const@Base" 2.3.0 1 @@ -3646,8 +3666,13 @@ (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::clear()@Base" 2.2.0 1 (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned long, unsigned long const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned long)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.4.1 1 (c++)"std::_Deque_base >::_M_initialize_map(unsigned long)@Base" 2.2.0 1 (c++)"std::_Deque_base >::~_Deque_base()@Base" 2.2.0 1 (c++)"std::_Deque_base >::~_Deque_base()@Base" 2.2.0 1 @@ -3670,14 +3695,33 @@ (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 + (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.0.1 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.0.1 1 @@ -3687,7 +3731,6 @@ (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.0.1 1 (c++)"std::map >, std::less, std::allocator > > > >::operator[](CPLString const&)@Base" 2.0.1 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.2.0 1 - (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator > >::operator[](OGRGeomFieldDefn* const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer* const&)@Base" 2.0.1 1 @@ -3705,10 +3748,10 @@ (c++)"std::pair::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 + (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.1 1 + (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.1 1 (c++)"void std::deque >::_M_push_back_aux(long long const&)@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSONObject&&)@Base" 2.3.0 1 (c++)"std::vector >::~vector()@Base" 2.3.0 1 @@ -3725,10 +3768,14 @@ (c++)"std::vector >::~vector()@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CADVector const&)@Base" 2.3.0 1 (c++)"std::vector >::reserve(unsigned long)@Base" 2.3.0 1 + (c++)"std::vector >::push_back(CADVector const&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(CPLString&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const*&&)@Base" 2.4.1 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const (&) [2])@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLString const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const*&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::reserve(unsigned long)@Base" 2.2.0 1 (c++)"std::vector >::push_back(CPLString const&)@Base" 2.2.2 1 @@ -3738,6 +3785,7 @@ (c++)"std::vector >::~vector()@Base" 2.0.1 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 2.0.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, VRTWarpedDataset::VerticalShiftGrid const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::ArrayState&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::MemberState&&)@Base" 2.3.0 1 (c++)"void std::vector >::emplace_back(CPLJSonStreamingParser::State&&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::State&&)@Base" 2.3.0 1 @@ -3748,6 +3796,7 @@ (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::emplace_back, std::allocator > >(std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator > const&>(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.2.2 1 + (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, char*&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator >&>(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator >&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator > >(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.2.2 1 (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::~vector()@Base" 2.0.1 1 @@ -3755,7 +3804,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3769,6 +3817,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3781,13 +3830,12 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.1.3 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.0 1 @@ -3844,27 +3892,30 @@ (c++)"std::vector > >, std::allocator > > > >::~vector()@Base" 2.3.2 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 + (c++)"void std::vector, std::allocator >, std::shared_ptr >, std::allocator, std::allocator >, std::shared_ptr > > >::_M_realloc_insert, std::allocator >, std::shared_ptr >&>(__gnu_cxx::__normal_iterator, std::allocator >, std::shared_ptr >*, std::vector, std::allocator >, std::shared_ptr >, std::allocator, std::allocator >, std::shared_ptr > > > >, std::pair, std::allocator >, std::shared_ptr >&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > >::emplace_back, std::allocator >, double> >(std::pair, std::allocator >, double>&&)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > >::_M_realloc_insert, std::allocator >, double> >(__gnu_cxx::__normal_iterator, std::allocator >, double>*, std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > > >, std::pair, std::allocator >, double>&&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, bool>, std::allocator, bool> > >::_M_realloc_insert, bool> >(__gnu_cxx::__normal_iterator, bool>*, std::vector, bool>, std::allocator, bool> > > >, std::pair, bool>&&)@Base" 2.2.2 1 - (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert const&>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair const&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.0.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 + (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.4.1 1 (c++)"std::vector, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > >, std::allocator, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > > > >::~vector()@Base" 2.2.0 1 (c++)"std::vector, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > >, std::allocator, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > > > >::~vector()@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 - (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.1.1 1 - (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.1.0 1 + (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.4.1 1 + (c++)"std::vector, std::allocator > >::resize(unsigned long)@Base" 2.4.1 1 + (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_assign_aux<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_range_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 + (c++)"void std::vector, std::allocator > >::emplace_back >(std::tuple&&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::tuple&&)@Base" 2.3.0 1 (c++)"std::vector >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1 (c++)"std::vector >::_M_fill_insert(std::_Bit_iterator, unsigned long, bool)@Base" 2.0.1 1 @@ -3874,14 +3925,19 @@ (c++)"std::vector >::vector(std::initializer_list, std::allocator const&)@Base" 2.2.0 1 (c++)"std::vector >::~vector()@Base" 2.2.0 1 (c++)"std::vector >::~vector()@Base" 2.2.0 1 + (c++)"void std::vector >::emplace_back(double const&)@Base" 2.4.1 1 + (c++)"void std::vector >::emplace_back(double&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(double&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_assign_aux(double const*, double const*, std::forward_iterator_tag)@Base" 2.3.2 1 + (c++)"std::vector >::_M_fill_assign(unsigned long, double const&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_range_insert<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::forward_iterator_tag)@Base" 2.3.0 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, double const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, double&&)@Base" 2.2.2 1 + (c++)"std::vector >::resize(unsigned long)@Base" 2.4.1 1 (c++)"std::vector >::reserve(unsigned long)@Base" 2.0.1 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 2.0.1 1 + (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, float const&)@Base" 2.3.0 1 (c++)"void std::vector >::emplace_back(unsigned char&&)@Base" 2.2.0 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 @@ -3896,6 +3952,7 @@ (c++)"void std::vector >::emplace_back(unsigned int&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_fill_assign(unsigned long, unsigned int const&)@Base" 2.3.2 1 (c++)"std::vector >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, unsigned int const&)@Base" 2.0.1 1 + (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, unsigned int&&)@Base" 2.4.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, unsigned int const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, unsigned int&&)@Base" 2.2.2 1 @@ -3916,6 +3973,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, long long const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, long long&&)@Base" 2.2.2 1 + (c++)"std::vector >::reserve(unsigned long)@Base" 2.4.1 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 2.2.0 1 (c++)"void std::vector >::emplace_back(unsigned long long&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 @@ -3957,6 +4015,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -3994,6 +4053,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 @@ -4102,10 +4162,10 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::equal_range(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator >&&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator >&&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > const, double> >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4131,11 +4191,12 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 @@ -4143,16 +4204,15 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.0.1 1 @@ -4160,6 +4220,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 @@ -4180,6 +4241,7 @@ (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector > > >, std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_erase(std::_Rb_tree_node const, std::vector > > >*)@Base" 2.0.1 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::find(std::pair const&)@Base" 2.1.0 1 @@ -4193,10 +4255,12 @@ (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, OGRCoordinateTransformation*> >, std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_erase(std::_Rb_tree_node const, OGRCoordinateTransformation*> >*)@Base" 2.0.1 1 + (c++)"std::_Rb_tree_iterator const, std::vector, bool>, std::allocator, bool> > > > > std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >* std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_copy, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node>(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_erase(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_erase(std::_Rb_tree_node const, int> >*)@Base" 2.0.1 1 @@ -4220,6 +4284,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 @@ -4236,7 +4301,11 @@ (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > > >, int const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > > >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > > >, int const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.0.1 1 @@ -4244,6 +4313,7 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 @@ -4283,20 +4353,23 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.0.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4304,16 +4377,18 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(long long const&)@Base" 2.1.1 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(long long&&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree_node* std::_Rb_tree, std::less, std::allocator >::_M_copy, std::less, std::allocator >::_Alloc_node>(std::_Rb_tree_node const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::less, std::allocator >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.1.0 1 (c++)"std::__detail::_Hash_node, std::allocator >, true>* std::__detail::_Hashtable_alloc, std::allocator >, true> > >::_M_allocate_node, std::allocator > const&>(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 - (c++)"bool std::operator< (std::pair const&, std::pair const&)@Base" 2.3.2 1 + (c++)"std::__detail::_Map_base, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(char const*, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator > const&, char const*)@Base" 2.0.1 1 @@ -4384,6 +4459,7 @@ (c++)"typeinfo for OGRLayerDecorator@Base" 2.0.1 1 (c++)"typeinfo for GDALNoDataMaskBand@Base" 2.0.1 1 (c++)"typeinfo for OGRMultiLineString@Base" 2.0.1 1 + (c++)"typeinfo for CADDictionaryRecord@Base" 2.4.1 1 (c++)"typeinfo for GDALMDReaderManager@Base" 2.0.1 1 (c++)"typeinfo for GDALProxyRasterBand@Base" 2.0.1 1 (c++)"typeinfo for IOGRGeometryVisitor@Base" 2.3.0 1 @@ -4415,6 +4491,7 @@ (c++)"typeinfo for CADArc@Base" 2.3.0 1 (c++)"typeinfo for CADRay@Base" 2.3.0 1 (c++)"typeinfo for CPLErr@Base" 2.1.0 1 + (c++)"typeinfo for VSIDIR@Base" 2.4.1 1 (c++)"typeinfo for CADFile@Base" 2.2.0 1 (c++)"typeinfo for CADLine@Base" 2.3.0 1 (c++)"typeinfo for CADText@Base" 2.3.0 1 @@ -4444,7 +4521,10 @@ (c++)"typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo name for CADEllipse@Base" 2.3.0 1 (c++)"typeinfo name for CADPoint3D@Base" 2.3.0 1 @@ -4512,6 +4592,7 @@ (c++)"typeinfo name for OGRLayerDecorator@Base" 2.0.1 1 (c++)"typeinfo name for GDALNoDataMaskBand@Base" 2.0.1 1 (c++)"typeinfo name for OGRMultiLineString@Base" 2.0.1 1 + (c++)"typeinfo name for CADDictionaryRecord@Base" 2.4.1 1 (c++)"typeinfo name for GDALMDReaderManager@Base" 2.0.1 1 (c++)"typeinfo name for GDALProxyRasterBand@Base" 2.0.1 1 (c++)"typeinfo name for IOGRGeometryVisitor@Base" 2.3.0 1 @@ -4543,6 +4624,7 @@ (c++)"typeinfo name for CADArc@Base" 2.3.0 1 (c++)"typeinfo name for CADRay@Base" 2.3.0 1 (c++)"typeinfo name for CPLErr@Base" 2.1.0 1 + (c++)"typeinfo name for VSIDIR@Base" 2.4.1 1 (c++)"typeinfo name for CADFile@Base" 2.2.0 1 (c++)"typeinfo name for CADLine@Base" 2.3.0 1 (c++)"typeinfo name for CADText@Base" 2.3.0 1 @@ -4572,8 +4654,12 @@ (c++)"typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo name for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 + (c++)"typeinfo name for std::_Sp_make_shared_tag@Base" 2.4.1 1 (c++)"vtable for CADEllipse@Base" 2.3.0 1 (c++)"vtable for CADPoint3D@Base" 2.3.0 1 (c++)"vtable for CADXRecord@Base" 2.2.0 1 @@ -4640,6 +4726,7 @@ (c++)"vtable for OGRLayerDecorator@Base" 2.0.1 1 (c++)"vtable for GDALNoDataMaskBand@Base" 2.0.1 1 (c++)"vtable for OGRMultiLineString@Base" 2.0.1 1 + (c++)"vtable for CADDictionaryRecord@Base" 2.4.1 1 (c++)"vtable for GDALMDReaderManager@Base" 2.0.1 1 (c++)"vtable for GDALProxyRasterBand@Base" 2.0.1 1 (c++)"vtable for OGRSpatialReference@Base" 2.0.1 1 @@ -4651,6 +4738,7 @@ (c++)"vtable for OGRPolyhedralSurface@Base" 2.2.0 1 (c++)"vtable for VRTDerivedRasterBand@Base" 2.0.1 1 (c++)"vtable for VRTSourcedRasterBand@Base" 2.0.1 1 + (c++)"vtable for VSIFilesystemHandler@Base" 2.4.1 1 (c++)"vtable for OGRGeometryCollection@Base" 2.0.1 1 (c++)"vtable for CPLJSonStreamingParser@Base" 2.3.0 1 (c++)"vtable for GDALJP2AbstractDataset@Base" 2.0.1 1 @@ -4666,6 +4754,7 @@ (c++)"vtable for GDALDefaultRasterAttributeTable@Base" 2.0.1 1 (c++)"vtable for CADArc@Base" 2.3.0 1 (c++)"vtable for CADRay@Base" 2.3.0 1 + (c++)"vtable for VSIDIR@Base" 2.4.1 1 (c++)"vtable for CADFile@Base" 2.2.0 1 (c++)"vtable for CADLine@Base" 2.3.0 1 (c++)"vtable for CADText@Base" 2.3.0 1 @@ -4690,6 +4779,10 @@ (c++)"vtable for OGRFeature::FieldNotFoundException@Base" 2.3.0 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"vtable for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"vtable for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"vtable for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"VRTComplexSource::RasterIOInternal(int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*, GDALDataType)::bHasWarned@Base" 2.2.3 1 (c++)"VRTComplexSource::RasterIOInternal(int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*, GDALDataType)::bHasWarned@Base" 2.2.3 1 + (c++)"std::_Sp_make_shared_tag::_S_ti()::__tag@Base" 2.4.1 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.mipsel gdal-2.4.2+dfsg/debian/libgdal20.symbols.mipsel --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.mipsel 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.mipsel 2019-07-07 12:07:12.000000000 +0000 @@ -48,6 +48,7 @@ (c++)"PamHistogramToXMLTree(double, double, int, unsigned long long*, int, int)@Base" 2.0.1 1 (c++)"VSICreateGZipWritable(VSIVirtualHandle*, int, int)@Base" 2.0.1 1 (c++)"CPLParseRFC822DateTime(char const*, int*, int*, int*, int*, int*, int*, int*, int*)@Base" 2.3.0 1 + (c++)"CPLQuotedSQLIdentifier(char const*)@Base" 2.4.1 1 (c++)"OGRGeometryFromHexEWKB(char const*, int*, int)@Base" 2.0.1 1 (c++)"OGRPGCommonLaunderName(char const*, char const*)@Base" 2.0.1 1 (c++)"OGRParseRFC822DateTime(char const*, OGRField*)@Base" 2.0.1 1 @@ -140,6 +141,7 @@ (c++)"GDALDriver::SetMetadataItem(char const*, char const*, char const*)@Base" 2.0.1 1 (c++)"GDALDriver::DefaultCopyFiles(char const*, char const*)@Base" 1.9.0 1 (c++)"GDALDriver::DefaultCopyMasks(GDALDataset*, GDALDataset*, int)@Base" 1.9.0 1 + (c++)"GDALDriver::DefaultCopyMasks(GDALDataset*, GDALDataset*, int, char const* const*, int (*)(double, char const*, void*), void*)@Base" 2.4.1 1 (c++)"GDALDriver::DefaultCreateCopy(char const*, GDALDataset*, int, char**, int (*)(double, char const*, void*), void*)@Base" 1.9.0 1 (c++)"GDALDriver::Create(char const*, int, int, int, GDALDataType, char**)@Base" 1.9.0 1 (c++)"GDALDriver::Delete(char const*)@Base" 1.9.0 1 @@ -336,6 +338,7 @@ (c++)"VRTDataset::IBuildOverviews(char const*, int, int*, int, int*, int (*)(double, char const*, void*), void*)@Base" 2.1.0 1 (c++)"VRTDataset::SetGeoTransform(double*)@Base" 1.9.0 1 (c++)"VRTDataset::SetMetadataItem(char const*, char const*, char const*)@Base" 1.9.0 1 + (c++)"VRTDataset::ExpandProxyBands()@Base" 2.4.1 1 (c++)"VRTDataset::GetGCPProjection()@Base" 1.9.0 1 (c++)"VRTDataset::GetProjectionRef()@Base" 1.9.0 1 (c++)"VRTDataset::BuildVirtualOverviews()@Base" 2.1.0 1 @@ -442,7 +445,6 @@ (c++)"GDALDataset::ProcessSQLAlterTableAlterColumn(char const*)@Base" 2.0.1 1 (c++)"GDALDataset::ProcessSQLAlterTableRenameColumn(char const*)@Base" 2.0.1 1 (c++)"GDALDataset::ValidateRasterIOOrAdviseReadParameters(char const*, int*, int, int, int, int, int, int, int, int*)@Base" 1.11.0 1 - (c++)"GDALDataset::Init(bool)@Base" 2.2.0 1 (c++)"GDALDataset::Bands::Iterator::Iterator(GDALDataset*, bool)@Base" 2.3.0 1 (c++)"GDALDataset::Bands::Iterator::Iterator(GDALDataset*, bool)@Base" 2.3.0 1 (c++)"GDALDataset::Bands::Iterator::~Iterator()@Base" 2.3.0 1 @@ -715,7 +717,6 @@ (c++)"CPLLockHolder::CPLLockHolder(_CPLLock**, CPLLockType, char const*, int)@Base" 2.0.1 1 (c++)"CPLLockHolder::~CPLLockHolder()@Base" 2.0.1 1 (c++)"CPLLockHolder::~CPLLockHolder()@Base" 2.0.1 1 - (c++)"CPLStringList::Initialize()@Base" 1.9.0 1 (c++)"CPLStringList::AddNameValue(char const*, char const*)@Base" 1.9.0 1 (c++)"CPLStringList::SetNameValue(char const*, char const*)@Base" 1.9.0 1 (c++)"CPLStringList::MakeOurOwnCopy()@Base" 1.9.0 1 @@ -894,10 +895,10 @@ (c++)"RawRasterBand::Write(void*, unsigned int, unsigned int)@Base" 1.9.0 1 (c++)"RawRasterBand::IRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*)@Base" 2.0.1 1 (c++)"RawRasterBand::SetAccess(GDALAccess)@Base" 1.9.0 1 - (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, void*, unsigned long long, int, int, GDALDataType, int, int, int)@Base" 1.9.0 1 - (c++)"RawRasterBand::RawRasterBand(void*, unsigned long long, int, int, GDALDataType, int, int, int, int, int)@Base" 1.9.0 1 - (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, void*, unsigned long long, int, int, GDALDataType, int, int, int)@Base" 1.9.0 1 - (c++)"RawRasterBand::RawRasterBand(void*, unsigned long long, int, int, GDALDataType, int, int, int, int, int)@Base" 1.9.0 1 + (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, _IO_FILE*, unsigned long long, int, int, GDALDataType, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(_IO_FILE*, unsigned long long, int, int, GDALDataType, int, int, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, _IO_FILE*, unsigned long long, int, int, GDALDataType, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(_IO_FILE*, unsigned long long, int, int, GDALDataType, int, int, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 1.9.0 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 1.9.0 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 1.9.0 1 @@ -1046,6 +1047,7 @@ (c++)"GDALRasterBand::GetNoDataValue(int*)@Base" 1.9.0 1 (c++)"GDALRasterBand::LeaveReadWrite()@Base" 2.0.1 1 (c++)"GDALRasterBand::SetNoDataValue(double)@Base" 1.9.0 1 + (c++)"GDALRasterBand::SetValidPercent(unsigned long long, unsigned long long)@Base" 2.4.1 1 (c++)"GDALRasterBand::GetCategoryNames()@Base" 1.9.0 1 (c++)"GDALRasterBand::GetOverviewCount()@Base" 1.9.0 1 (c++)"GDALRasterBand::OverviewRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*)@Base" 2.0.1 1 @@ -1074,7 +1076,6 @@ (c++)"GDALRasterBand::GetRasterSampleOverview(unsigned long long)@Base" 2.0.1 1 (c++)"GDALRasterBand::GetIndexColorTranslationTo(GDALRasterBand*, unsigned char*, int*)@Base" 1.9.0 1 (c++)"GDALRasterBand::Fill(double, double)@Base" 1.9.0 1 - (c++)"GDALRasterBand::Init(int)@Base" 2.1.0 1 (c++)"GDALRasterBand::GetBand()@Base" 1.9.0 1 (c++)"GDALRasterBand::GetScale(int*)@Base" 1.9.0 1 (c++)"GDALRasterBand::GetXSize()@Base" 1.9.0 1 @@ -1645,6 +1646,7 @@ (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 1.9.0 1 (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 1.9.0 1 (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 1.9.0 1 + (c++)"VRTWarpedDataset::FlushCache()@Base" 2.4.1 1 (c++)"VRTWarpedDataset::Initialize(void*)@Base" 1.9.0 1 (c++)"VRTWarpedDataset::GetFileList()@Base" 1.9.0 1 (c++)"VRTWarpedDataset::ProcessBlock(int, int)@Base" 1.9.0 1 @@ -1732,6 +1734,7 @@ (c++)"GDALWarpOperation::CreateDestinationBuffer(int, int, int*)@Base" 2.3.0 1 (c++)"GDALWarpOperation::CollectChunkListInternal(int, int, int, int)@Base" 2.3.0 1 (c++)"GDALWarpOperation::DestroyDestinationBuffer(void*)@Base" 2.3.0 1 + (c++)"GDALWarpOperation::ComputeSourceWindowStartingFromSource(int, int, int, int, double*, double*, double*, double*)@Base" 2.4.1 1 (c++)"GDALWarpOperation::GDALWarpOperation()@Base" 1.9.0 1 (c++)"GDALWarpOperation::GDALWarpOperation()@Base" 1.9.0 1 (c++)"GDALWarpOperation::~GDALWarpOperation()@Base" 1.9.0 1 @@ -1930,13 +1933,20 @@ (c++)"OGRMultiLineString::~OGRMultiLineString()@Base" 1.9.0 1 (c++)"OGRMultiLineString::~OGRMultiLineString()@Base" 1.9.0 1 (c++)"OGRMultiLineString::operator=(OGRMultiLineString const&)@Base" 2.1.0 1 + (c++)"CADDictionaryRecord::CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::GetNextJob(CPLWorkerThread*)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::SubmitJobs(void (*)(void*), std::vector > const&)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::WaitCompletion(int)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::DeclareJobFinished()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::WorkerThreadFunction(void*)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::Setup(int, void (*)(void*), void**)@Base" 2.1.0 1 + (c++)"CPLWorkerThreadPool::Setup(int, void (*)(void*), void**, bool)@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::SubmitJob(void (*)(void*), void*)@Base" 2.1.0 1 + (c++)"CPLWorkerThreadPool::WaitEvent()@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::CPLWorkerThreadPool()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::CPLWorkerThreadPool()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::~CPLWorkerThreadPool()@Base" 2.1.0 1 @@ -2138,6 +2148,7 @@ (c++)"GDALAllValidMaskBand::IReadBlock(int, int, void*)@Base" 1.9.0 1 (c++)"GDALAllValidMaskBand::GetMaskBand()@Base" 1.9.0 1 (c++)"GDALAllValidMaskBand::GetMaskFlags()@Base" 1.9.0 1 + (c++)"GDALAllValidMaskBand::ComputeStatistics(int, double*, double*, double*, double*, int (*)(double, char const*, void*), void*)@Base" 2.4.1 1 (c++)"GDALAllValidMaskBand::GDALAllValidMaskBand(GDALRasterBand*)@Base" 1.9.0 1 (c++)"GDALAllValidMaskBand::GDALAllValidMaskBand(GDALRasterBand*)@Base" 1.9.0 1 (c++)"GDALAllValidMaskBand::~GDALAllValidMaskBand()@Base" 1.9.0 1 @@ -2177,6 +2188,7 @@ (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 1.11.0 1 (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 1.11.0 1 (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 1.11.0 1 + (c++)"GDALProxyPoolDataset::AddSrcBand(int, GDALDataType, int, int)@Base" 2.4.1 1 (c++)"GDALProxyPoolDataset::FlushCache()@Base" 2.3.0 1 (c++)"GDALProxyPoolDataset::GetMetadata(char const*)@Base" 1.9.0 1 (c++)"GDALProxyPoolDataset::SetProjection(char const*)@Base" 1.9.0 1 @@ -2330,10 +2342,12 @@ (c++)"VSIFilesystemHandler::SupportsSparseFiles(char const*)@Base" 2.2.0 1 (c++)"VSIFilesystemHandler::HasOptimizedReadMultiRange(char const*)@Base" 2.3.0 1 (c++)"VSIFilesystemHandler::Open(char const*, char const*)@Base" 2.1.0 1 + (c++)"VSIFilesystemHandler::Sync(char const*, char const*, char const* const*, int (*)(double, char const*, void*), void*, char***)@Base" 2.4.1 1 (c++)"VSIFilesystemHandler::Mkdir(char const*, long)@Base" 1.9.0 1 (c++)"VSIFilesystemHandler::Rmdir(char const*)@Base" 1.9.0 1 (c++)"VSIFilesystemHandler::Rename(char const*, char const*)@Base" 1.9.0 1 (c++)"VSIFilesystemHandler::Unlink(char const*)@Base" 1.9.0 1 + (c++)"VSIFilesystemHandler::OpenDir(char const*, int, char const* const*)@Base" 2.4.1 1 (c++)"VSIFilesystemHandler::ReadDir(char const*)@Base" 1.9.0 1 (c++)"VSIFilesystemHandler::ReadDirEx(char const*, int)@Base" 2.1.0 1 (c++)"CPLConfigOptionSetter::CPLConfigOptionSetter(char const*, char const*, bool)@Base" 2.3.0 1 @@ -2380,7 +2394,7 @@ (c++)"CPLJSonStreamingParser::SetMaxStringSize(unsigned int)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::StartArrayMember()@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::StartObjectMember(char const*, unsigned int)@Base" 2.3.0 1 - (c++)"CPLJSonStreamingParser::EmitUnexpectedChar(char)@Base" 2.3.0 1 + (c++)"CPLJSonStreamingParser::EmitUnexpectedChar(char, char const*)@Base" 2.4.1 1 (c++)"CPLJSonStreamingParser::GetSerializedString[abi:cxx11](char const*)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::CheckAndEmitTrueFalseOrNull(char)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::Null()@Base" 2.3.0 1 @@ -2449,7 +2463,6 @@ (c++)"GDALProxyPoolRasterBand::RefUnderlyingRasterBand()@Base" 1.9.0 1 (c++)"GDALProxyPoolRasterBand::AddSrcMaskBandDescription(GDALDataType, int, int)@Base" 1.9.0 1 (c++)"GDALProxyPoolRasterBand::UnrefUnderlyingRasterBand(GDALRasterBand*)@Base" 1.9.0 1 - (c++)"GDALProxyPoolRasterBand::Init()@Base" 1.9.0 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, GDALRasterBand*)@Base" 1.9.0 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, int, GDALDataType, int, int)@Base" 1.9.0 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, GDALRasterBand*)@Base" 1.9.0 1 @@ -2541,15 +2554,15 @@ (c++)"OGRDefaultConstGeometryVisitor::~OGRDefaultConstGeometryVisitor()@Base" 2.3.0 1 (c++)"GDALDefaultRasterAttributeTable::SetRowCount(int)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::CreateColumn(char const*, GDALRATFieldType, GDALRATFieldUsage)@Base" 1.11.0 1 + (c++)"GDALDefaultRasterAttributeTable::SetTableType(GDALRATTableType)@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::AnalyseColumns()@Base" 1.11.0 1 + (c++)"GDALDefaultRasterAttributeTable::RemoveStatistics()@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::SetLinearBinning(double, double)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::ChangesAreWrittenToFile()@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, char const*)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, double)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, int)@Base" 1.11.0 1 - (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable(GDALDefaultRasterAttributeTable const&)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable()@Base" 1.11.0 1 - (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable(GDALDefaultRasterAttributeTable const&)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable()@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::~GDALDefaultRasterAttributeTable()@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::~GDALDefaultRasterAttributeTable()@Base" 1.11.0 1 @@ -2569,6 +2582,9 @@ (c++)"CADRay::~CADRay()@Base" 2.3.0 1 (c++)"CADRay::~CADRay()@Base" 2.3.0 1 (c++)"CADRay::~CADRay()@Base" 2.3.0 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 (c++)"CADFile::ReadTables(CADFile::OpenOptions)@Base" 2.2.0 1 (c++)"CADFile::isReadingUnsupportedGeometries()@Base" 2.2.0 1 (c++)"CADFile::GetLayer(unsigned int)@Base" 2.2.0 1 @@ -2963,8 +2979,8 @@ (c++)"S57Writer::WriteCompleteFeature(OGRFeature*)@Base" 1.9.0 1 (c++)"S57Writer::Close()@Base" 1.9.0 1 (c++)"S57Writer::WriteATTF(DDFRecord*, OGRFeature*)@Base" 1.9.0 1 - (c++)"S57Writer::WriteDSID(int, int, char const*, char const*, char const*, char const*, char const*, char const*, int, char const*, int, int, int, int, int, int)@Base" 2.0.1 1 - (c++)"S57Writer::WriteDSPM(int, int, int, int)@Base" 2.0.1 1 + (c++)"S57Writer::WriteDSID(int, int, char const*, char const*, char const*, char const*, char const*, char const*, int, char const*, int, int, int, int, int, int, int, int)@Base" 2.4.1 1 + (c++)"S57Writer::WriteDSPM(int, int, int, int, int, int)@Base" 2.4.1 1 (c++)"S57Writer::S57Writer()@Base" 1.9.0 1 (c++)"S57Writer::S57Writer()@Base" 1.9.0 1 (c++)"S57Writer::~S57Writer()@Base" 1.9.0 1 @@ -3229,6 +3245,7 @@ (c++)"OGRFeatureDefn::GetGeomFieldIndex(char const*) const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::IsGeometryIgnored() const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::ComputeMapForSetFrom(OGRFeatureDefn const*, bool) const@Base" 2.3.0 1 + (c++)"OGRFeatureDefn::GetFieldIndexCaseSensitive(char const*) const@Base" 2.4.1 1 (c++)"OGRFeatureDefn::Clone() const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::IsSame(OGRFeatureDefn const*) const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::GetName() const@Base" 2.3.0 1 @@ -3386,6 +3403,7 @@ (c++)"OGRMultiLineString::hasCurveGeometry(int) const@Base" 2.0.1 1 (c++)"OGRMultiLineString::isCompatibleSubType(OGRwkbGeometryType) const@Base" 2.0.1 1 (c++)"OGRMultiLineString::accept(IOGRConstGeometryVisitor*) const@Base" 2.3.0 1 + (c++)"CADDictionaryRecord::getType() const@Base" 2.4.1 1 (c++)"OGRSpatialReference::GetTOWGS84(double*, int) const@Base" 1.9.0 1 (c++)"OGRSpatialReference::GetUTMZone(int*) const@Base" 1.9.0 1 (c++)"OGRSpatialReference::IsCompound() const@Base" 1.9.0 1 @@ -3499,6 +3517,7 @@ (c++)"OGRGeometryUniquePtrDeleter::operator()(OGRGeometry*) const@Base" 2.3.0 1 (c++)"GDALDefaultRasterAttributeTable::GetRowCount() const@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GetNameOfCol(int) const@Base" 1.11.0 1 + (c++)"GDALDefaultRasterAttributeTable::GetTableType() const@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::GetTypeOfCol(int) const@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GetColOfUsage(GDALRATFieldUsage) const@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GetRowOfValue(double) const@Base" 1.11.0 1 @@ -3633,6 +3652,7 @@ (c++)"CPLString::ifind(std::__cxx11::basic_string, std::allocator > const&, unsigned int) const@Base" 2.0.1 1 (c++)"CPLString::endsWith(std::__cxx11::basic_string, std::allocator > const&) const@Base" 2.3.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_find_before_node(unsigned int, std::__cxx11::basic_string, std::allocator > const&, unsigned int) const@Base" 2.3.0 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_find_before_node(unsigned int, std::__cxx11::basic_string, std::allocator > const&, unsigned int) const@Base" 2.4.1 1 (c++)"std::ctype::do_widen(char) const@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::find(CPLString const&) const@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&) const@Base" 2.3.0 1 @@ -3647,8 +3667,13 @@ (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned int)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned int, unsigned int const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned int)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.4.1 1 (c++)"std::_Deque_base >::_M_initialize_map(unsigned int)@Base" 2.2.0 1 (c++)"std::_Deque_base >::~_Deque_base()@Base" 2.2.0 1 (c++)"std::_Deque_base >::~_Deque_base()@Base" 2.2.0 1 @@ -3671,14 +3696,33 @@ (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 + (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 @@ -3689,16 +3733,15 @@ (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 1.9.0 1 (c++)"std::map >, std::less, std::allocator > > > >::operator[](CPLString const&)@Base" 1.9.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.2.0 1 - (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer* const&)@Base" 2.2.2 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer*&&)@Base" 2.2.0 1 - (c++)"std::map, std::vector, bool>, std::allocator, bool> > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::operator[](std::pair const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](int const&)@Base" 2.4.1 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::operator[](int const&)@Base" 2.1.0 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 @@ -3706,10 +3749,10 @@ (c++)"std::pair::~pair()@Base" 1.9.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 + (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.1 1 + (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.1 1 (c++)"void std::deque >::_M_push_back_aux(long long const&)@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSONObject&&)@Base" 2.3.0 1 (c++)"std::vector >::~vector()@Base" 2.3.0 1 @@ -3729,7 +3772,10 @@ (c++)"void std::vector >::emplace_back(CPLString&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const*&&)@Base" 2.4.1 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const (&) [2])@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLString const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const*&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::reserve(unsigned int)@Base" 2.2.0 1 (c++)"std::vector >::push_back(CPLString const&)@Base" 2.3.2 1 @@ -3739,6 +3785,7 @@ (c++)"std::vector >::~vector()@Base" 1.9.0 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 1.9.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, VRTWarpedDataset::VerticalShiftGrid const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::ArrayState&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::MemberState&&)@Base" 2.3.0 1 (c++)"void std::vector >::emplace_back(CPLJSonStreamingParser::State&&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::State&&)@Base" 2.3.0 1 @@ -3749,6 +3796,7 @@ (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::emplace_back, std::allocator > >(std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator > const&>(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.2.2 1 + (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, char*&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator >&>(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator >&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator > >(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.2.2 1 (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::~vector()@Base" 2.0.1 1 @@ -3756,7 +3804,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3770,6 +3817,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3782,13 +3830,12 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLayer* const&)@Base" 2.2.2 1 @@ -3844,6 +3891,7 @@ (c++)"std::vector > >, std::allocator > > > >::~vector()@Base" 2.3.2 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 + (c++)"void std::vector, std::allocator >, std::shared_ptr >, std::allocator, std::allocator >, std::shared_ptr > > >::_M_realloc_insert, std::allocator >, std::shared_ptr >&>(__gnu_cxx::__normal_iterator, std::allocator >, std::shared_ptr >*, std::vector, std::allocator >, std::shared_ptr >, std::allocator, std::allocator >, std::shared_ptr > > > >, std::pair, std::allocator >, std::shared_ptr >&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > >::emplace_back, std::allocator >, double> >(std::pair, std::allocator >, double>&&)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > >::_M_realloc_insert, std::allocator >, double> >(__gnu_cxx::__normal_iterator, std::allocator >, double>*, std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > > >, std::pair, std::allocator >, double>&&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.0 1 @@ -3855,17 +3903,20 @@ (c++)"std::vector, std::allocator > >::reserve(unsigned int)@Base" 2.2.0 1 (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 1.9.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 + (c++)"std::vector, std::allocator > >::_M_default_append(unsigned int)@Base" 2.4.1 1 (c++)"std::vector, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > >, std::allocator, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > > > >::~vector()@Base" 2.2.0 1 (c++)"std::vector, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > >, std::allocator, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > > > >::~vector()@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 - (c++)"std::vector, std::allocator > >::_M_default_append(unsigned int)@Base" 2.1.1 1 - (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.1.0 1 + (c++)"std::vector, std::allocator > >::_M_default_append(unsigned int)@Base" 2.4.1 1 + (c++)"std::vector, std::allocator > >::resize(unsigned int)@Base" 2.4.1 1 + (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_assign_aux<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_range_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 + (c++)"void std::vector, std::allocator > >::emplace_back >(std::tuple&&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::tuple&&)@Base" 2.3.0 1 (c++)"std::vector >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1 (c++)"std::vector >::_M_fill_insert(std::_Bit_iterator, unsigned int, bool)@Base" 1.9.0 1 @@ -3875,14 +3926,19 @@ (c++)"std::vector >::vector(std::initializer_list, std::allocator const&)@Base" 2.2.0 1 (c++)"std::vector >::~vector()@Base" 2.2.0 1 (c++)"std::vector >::~vector()@Base" 2.2.0 1 + (c++)"void std::vector >::emplace_back(double const&)@Base" 2.4.1 1 + (c++)"void std::vector >::emplace_back(double&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(double&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_assign_aux(double const*, double const*, std::forward_iterator_tag)@Base" 2.3.2 1 + (c++)"std::vector >::_M_fill_assign(unsigned int, double const&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_range_insert<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::forward_iterator_tag)@Base" 2.3.0 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, double const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, double&&)@Base" 2.2.2 1 + (c++)"std::vector >::resize(unsigned int)@Base" 2.4.1 1 (c++)"std::vector >::reserve(unsigned int)@Base" 1.9.0 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 1.9.0 1 + (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, float const&)@Base" 2.3.0 1 (c++)"void std::vector >::emplace_back(unsigned char&&)@Base" 2.2.0 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 @@ -3897,6 +3953,7 @@ (c++)"void std::vector >::emplace_back(unsigned int&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_fill_assign(unsigned int, unsigned int const&)@Base" 2.3.2 1 (c++)"std::vector >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned int, unsigned int const&)@Base" 1.9.0 1 + (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, unsigned int&&)@Base" 2.4.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, unsigned int const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, unsigned int&&)@Base" 2.2.2 1 @@ -3915,6 +3972,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, long long const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, long long&&)@Base" 2.2.2 1 + (c++)"std::vector >::reserve(unsigned int)@Base" 2.4.1 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 2.2.0 1 (c++)"void std::vector >::emplace_back(unsigned long long&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 @@ -3949,6 +4007,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4068,6 +4127,7 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4082,16 +4142,17 @@ (c++)"std::_Rb_tree_iterator, std::allocator > const, long long> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, long long> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, long long> >*)@Base" 2.3.0 1 + (c++)"std::_Rb_tree_iterator > > > std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(OGRFeature* const&)@Base" 2.1.3 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.1.3 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4099,9 +4160,9 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 @@ -4124,7 +4185,6 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRSpatialReference const* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase_aux(std::_Rb_tree_const_iterator const, char*> >)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator const, char*> > std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, char*> >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::find(std::pair const&)@Base" 1.10.1 1 @@ -4180,7 +4240,10 @@ (c++)"std::_Rb_tree_iterator, std::allocator > > > std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > > >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.1.1 1 @@ -4221,16 +4284,17 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.1.0 1 (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4244,10 +4308,12 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(long long const&)@Base" 2.1.1 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(long long&&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree_node* std::_Rb_tree, std::less, std::allocator >::_M_copy, std::less, std::allocator >::_Alloc_node>(std::_Rb_tree_node const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::less, std::allocator >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.1.0 1 (c++)"std::__detail::_Hash_node, std::allocator >, true>* std::__detail::_Hashtable_alloc, std::allocator >, true> > >::_M_allocate_node, std::allocator > const&>(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 + (c++)"std::__detail::_Map_base, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.1 1 (c++)"bool std::operator< (std::pair const&, std::pair const&)@Base" 2.3.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(char const*, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4319,6 +4385,7 @@ (c++)"typeinfo for OGRLayerDecorator@Base" 2.0.1 1 (c++)"typeinfo for GDALNoDataMaskBand@Base" 1.9.0 1 (c++)"typeinfo for OGRMultiLineString@Base" 1.9.0 1 + (c++)"typeinfo for CADDictionaryRecord@Base" 2.4.1 1 (c++)"typeinfo for GDALMDReaderManager@Base" 2.0.1 1 (c++)"typeinfo for GDALProxyRasterBand@Base" 1.9.0 1 (c++)"typeinfo for IOGRGeometryVisitor@Base" 2.3.0 1 @@ -4350,6 +4417,7 @@ (c++)"typeinfo for CADArc@Base" 2.3.0 1 (c++)"typeinfo for CADRay@Base" 2.3.0 1 (c++)"typeinfo for CPLErr@Base" 2.1.0 1 + (c++)"typeinfo for VSIDIR@Base" 2.4.1 1 (c++)"typeinfo for CADFile@Base" 2.2.0 1 (c++)"typeinfo for CADLine@Base" 2.3.0 1 (c++)"typeinfo for CADText@Base" 2.3.0 1 @@ -4379,7 +4447,10 @@ (c++)"typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo name for CADEllipse@Base" 2.3.0 1 (c++)"typeinfo name for CADPoint3D@Base" 2.3.0 1 @@ -4447,6 +4518,7 @@ (c++)"typeinfo name for OGRLayerDecorator@Base" 2.0.1 1 (c++)"typeinfo name for GDALNoDataMaskBand@Base" 1.9.0 1 (c++)"typeinfo name for OGRMultiLineString@Base" 1.9.0 1 + (c++)"typeinfo name for CADDictionaryRecord@Base" 2.4.1 1 (c++)"typeinfo name for GDALMDReaderManager@Base" 2.0.1 1 (c++)"typeinfo name for GDALProxyRasterBand@Base" 1.9.0 1 (c++)"typeinfo name for IOGRGeometryVisitor@Base" 2.3.0 1 @@ -4478,6 +4550,7 @@ (c++)"typeinfo name for CADArc@Base" 2.3.0 1 (c++)"typeinfo name for CADRay@Base" 2.3.0 1 (c++)"typeinfo name for CPLErr@Base" 2.1.0 1 + (c++)"typeinfo name for VSIDIR@Base" 2.4.1 1 (c++)"typeinfo name for CADFile@Base" 2.2.0 1 (c++)"typeinfo name for CADLine@Base" 2.3.0 1 (c++)"typeinfo name for CADText@Base" 2.3.0 1 @@ -4507,8 +4580,12 @@ (c++)"typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo name for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 + (c++)"typeinfo name for std::_Sp_make_shared_tag@Base" 2.4.1 1 (c++)"vtable for CADEllipse@Base" 2.3.0 1 (c++)"vtable for CADPoint3D@Base" 2.3.0 1 (c++)"vtable for CADXRecord@Base" 2.2.0 1 @@ -4575,6 +4652,7 @@ (c++)"vtable for OGRLayerDecorator@Base" 2.0.1 1 (c++)"vtable for GDALNoDataMaskBand@Base" 1.9.0 1 (c++)"vtable for OGRMultiLineString@Base" 1.9.0 1 + (c++)"vtable for CADDictionaryRecord@Base" 2.4.1 1 (c++)"vtable for GDALMDReaderManager@Base" 2.0.1 1 (c++)"vtable for GDALProxyRasterBand@Base" 1.9.0 1 (c++)"vtable for OGRSpatialReference@Base" 1.9.0 1 @@ -4586,6 +4664,7 @@ (c++)"vtable for OGRPolyhedralSurface@Base" 2.2.0 1 (c++)"vtable for VRTDerivedRasterBand@Base" 1.9.0 1 (c++)"vtable for VRTSourcedRasterBand@Base" 1.9.0 1 + (c++)"vtable for VSIFilesystemHandler@Base" 2.4.1 1 (c++)"vtable for OGRGeometryCollection@Base" 1.9.0 1 (c++)"vtable for CPLJSonStreamingParser@Base" 2.3.0 1 (c++)"vtable for GDALJP2AbstractDataset@Base" 1.11.0 1 @@ -4601,6 +4680,7 @@ (c++)"vtable for GDALDefaultRasterAttributeTable@Base" 1.11.0 1 (c++)"vtable for CADArc@Base" 2.3.0 1 (c++)"vtable for CADRay@Base" 2.3.0 1 + (c++)"vtable for VSIDIR@Base" 2.4.1 1 (c++)"vtable for CADFile@Base" 2.2.0 1 (c++)"vtable for CADLine@Base" 2.3.0 1 (c++)"vtable for CADText@Base" 2.3.0 1 @@ -4625,6 +4705,10 @@ (c++)"vtable for OGRFeature::FieldNotFoundException@Base" 2.3.0 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"vtable for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"vtable for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"vtable for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"VRTComplexSource::RasterIOInternal(int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*, GDALDataType)::bHasWarned@Base" 2.2.3 1 (c++)"VRTComplexSource::RasterIOInternal(int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*, GDALDataType)::bHasWarned@Base" 2.2.3 1 + (c++)"std::_Sp_make_shared_tag::_S_ti()::__tag@Base" 2.4.1 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.powerpc gdal-2.4.2+dfsg/debian/libgdal20.symbols.powerpc --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.powerpc 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.powerpc 2019-07-07 12:07:12.000000000 +0000 @@ -3667,6 +3667,8 @@ (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned int)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned int, unsigned int const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned int)@Base" 2.4.0 1 @@ -3720,6 +3722,7 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 @@ -3734,11 +3737,11 @@ (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer* const&)@Base" 2.2.2 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer*&&)@Base" 2.2.0 1 - (c++)"std::map, std::vector, bool>, std::allocator, bool> > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::operator[](std::pair const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](int const&)@Base" 2.4.1 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::operator[](int const&)@Base" 2.1.0 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 @@ -3746,8 +3749,6 @@ (c++)"std::pair::~pair()@Base" 1.9.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3803,7 +3804,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3817,6 +3817,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3829,13 +3830,12 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLayer* const&)@Base" 2.2.2 1 @@ -4005,6 +4005,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4124,6 +4125,7 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4138,16 +4140,17 @@ (c++)"std::_Rb_tree_iterator, std::allocator > const, long long> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, long long> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, long long> >*)@Base" 2.3.0 1 + (c++)"std::_Rb_tree_iterator > > > std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(OGRFeature* const&)@Base" 2.1.3 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.1.3 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4155,9 +4158,9 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 @@ -4180,7 +4183,6 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRSpatialReference const* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase_aux(std::_Rb_tree_const_iterator const, char*> >)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator const, char*> > std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, char*> >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::find(std::pair const&)@Base" 1.11.0 1 @@ -4239,6 +4241,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.1.1 1 @@ -4288,6 +4291,8 @@ (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.ppc64el gdal-2.4.2+dfsg/debian/libgdal20.symbols.ppc64el --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.ppc64el 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.ppc64el 2019-07-07 12:07:12.000000000 +0000 @@ -3666,6 +3666,8 @@ (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::clear()@Base" 2.2.0 1 (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned long, unsigned long const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned long)@Base" 2.4.0 1 @@ -3719,6 +3721,7 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.10.1 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.10.1 1 @@ -3745,8 +3748,6 @@ (c++)"std::pair::~pair()@Base" 1.10.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3803,7 +3804,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3817,6 +3817,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3829,13 +3830,12 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.1.3 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.0 1 @@ -3898,7 +3898,6 @@ (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, bool>, std::allocator, bool> > >::_M_realloc_insert, bool> >(__gnu_cxx::__normal_iterator, bool>*, std::vector, bool>, std::allocator, bool> > > >, std::pair, bool>&&)@Base" 2.2.2 1 - (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert const&>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair const&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 @@ -4016,6 +4015,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4053,6 +4053,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&)@Base" 1.10.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.1.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 @@ -4161,10 +4162,10 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::equal_range(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator >&&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator >&&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > const, double> >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4190,11 +4191,12 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 @@ -4202,16 +4204,15 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.0.1 1 @@ -4219,6 +4220,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 @@ -4239,6 +4241,7 @@ (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector > > >, std::pair const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_erase(std::_Rb_tree_node const, std::vector > > >*)@Base" 1.11.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::find(std::pair const&)@Base" 2.1.0 1 @@ -4252,10 +4255,12 @@ (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, OGRCoordinateTransformation*> >, std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_erase(std::_Rb_tree_node const, OGRCoordinateTransformation*> >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator const, std::vector, bool>, std::allocator, bool> > > > > std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >* std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_copy, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node>(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_erase(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_erase(std::_Rb_tree_node const, int> >*)@Base" 2.0.1 1 @@ -4279,6 +4284,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.11.0 1 @@ -4299,6 +4305,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > > >, int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.1 1 @@ -4306,6 +4313,7 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 @@ -4352,11 +4360,16 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4364,6 +4377,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4375,7 +4389,6 @@ (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.1.0 1 (c++)"std::__detail::_Hash_node, std::allocator >, true>* std::__detail::_Hashtable_alloc, std::allocator >, true> > >::_M_allocate_node, std::allocator > const&>(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 (c++)"std::__detail::_Map_base, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.0 1 - (c++)"bool std::operator< (std::pair const&, std::pair const&)@Base" 2.3.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(char const*, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator > const&, char const*)@Base" 2.0.1 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.riscv64 gdal-2.4.2+dfsg/debian/libgdal20.symbols.riscv64 --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.riscv64 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.riscv64 2019-07-07 12:07:12.000000000 +0000 @@ -3666,6 +3666,8 @@ (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::clear()@Base" 2.3.1 1 (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.3.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned long, unsigned long const&)@Base" 2.3.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.3.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.3.1 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned long)@Base" 2.4.0 1 @@ -3681,7 +3683,9 @@ (c++)"std::enable_if::value, void>::type std::__shared_ptr::reset(GDALDefaultRasterAttributeTable*)@Base" 2.3.1 1 (c++)"std::_Bvector_base >::_M_deallocate()@Base" 2.3.1 1 (c++)"std::__shared_count<(__gnu_cxx::_Lock_policy)1>::__shared_count(MVTTileLayer*)@Base" 2.3.1 1 + (c++)"std::__shared_count<(__gnu_cxx::_Lock_policy)1>::__shared_count(MVTTileLayerFeature*)@Base" 2.4.1 1 (c++)"std::__shared_count<(__gnu_cxx::_Lock_policy)1>::__shared_count(MVTTileLayer*)@Base" 2.3.1 1 + (c++)"std::__shared_count<(__gnu_cxx::_Lock_policy)1>::__shared_count(MVTTileLayerFeature*)@Base" 2.4.1 1 (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.3.1 1 (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.3.1 1 (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.3.1 1 @@ -3721,6 +3725,7 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)1>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)1>::_M_destroy()@Base" 2.3.1 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)1>::_M_release()@Base" 2.3.1 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.1 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.3.1 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.3.1 1 @@ -3747,8 +3752,6 @@ (c++)"std::pair::~pair()@Base" 2.3.1 1 (c++)"std::pair > >::~pair()@Base" 2.3.1 1 (c++)"std::pair > >::~pair()@Base" 2.3.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3769,6 +3772,7 @@ (c++)"std::vector >::~vector()@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CADVector const&)@Base" 2.3.1 1 (c++)"std::vector >::reserve(unsigned long)@Base" 2.3.1 1 + (c++)"std::vector >::push_back(CADVector const&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(CPLString&&)@Base" 2.3.1 1 (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.3.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.1 1 @@ -3804,7 +3808,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.3.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.3.1 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.3.1 1 @@ -3818,6 +3821,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.3.1 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.3.1 1 @@ -3830,13 +3834,12 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.3.1 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.3.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.3.1 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.3.1 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.3.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.1 1 @@ -3899,7 +3902,6 @@ (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.1 1 (c++)"void std::vector, bool>, std::allocator, bool> > >::_M_realloc_insert, bool> >(__gnu_cxx::__normal_iterator, bool>*, std::vector, bool>, std::allocator, bool> > > >, std::pair, bool>&&)@Base" 2.3.1 1 - (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.3.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert const&>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair const&)@Base" 2.3.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.1 1 @@ -4017,6 +4019,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.3.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4054,6 +4057,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&)@Base" 2.3.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.3.1 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 @@ -4162,10 +4166,10 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::equal_range(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.1 1 - (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator >&&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator >&&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > const, double> >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.1 1 @@ -4191,11 +4195,12 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, GDALDataset* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRMutexedLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRGeomFieldDefn* const&)@Base" 2.3.1 1 @@ -4203,16 +4208,15 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.3.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.1 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.3.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.3.1 1 @@ -4220,6 +4224,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.3.1 1 @@ -4240,6 +4245,7 @@ (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector > > >, std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_erase(std::_Rb_tree_node const, std::vector > > >*)@Base" 2.3.1 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::find(std::pair const&)@Base" 2.3.1 1 @@ -4253,10 +4259,12 @@ (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, OGRCoordinateTransformation*> >, std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_erase(std::_Rb_tree_node const, OGRCoordinateTransformation*> >*)@Base" 2.3.1 1 + (c++)"std::_Rb_tree_iterator const, std::vector, bool>, std::allocator, bool> > > > > std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >* std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_copy, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node>(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_erase(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >*)@Base" 2.3.1 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_erase(std::_Rb_tree_node const, int> >*)@Base" 2.3.1 1 @@ -4280,6 +4288,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 @@ -4300,6 +4309,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > > >, int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.3.1 1 @@ -4307,6 +4317,7 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.3.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 @@ -4353,11 +4364,16 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 + (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.3.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 @@ -4365,6 +4381,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.3.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.3.1 1 @@ -4376,7 +4393,6 @@ (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.1 1 (c++)"std::__detail::_Hash_node, std::allocator >, true>* std::__detail::_Hashtable_alloc, std::allocator >, true> > >::_M_allocate_node, std::allocator > const&>(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 (c++)"std::__detail::_Map_base, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.0 1 - (c++)"bool std::operator< (std::pair const&, std::pair const&)@Base" 2.3.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.3.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(char const*, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator > const&, char const*)@Base" 2.3.1 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.s390x gdal-2.4.2+dfsg/debian/libgdal20.symbols.s390x --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.s390x 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.s390x 2019-07-07 12:07:12.000000000 +0000 @@ -3667,6 +3667,8 @@ (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned long)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned long, unsigned long const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned long)@Base" 2.4.0 1 @@ -3720,6 +3722,8 @@ (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 + (c++)"std::pair* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > >, std::pair*>(__gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > >, std::pair*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.9.0 1 @@ -3731,12 +3735,14 @@ (c++)"std::map >, std::less, std::allocator > > > >::operator[](CPLString const&)@Base" 1.9.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.4.1 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer* const&)@Base" 2.2.2 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer*&&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](int const&)@Base" 2.4.1 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::operator[](int const&)@Base" 2.1.0 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 (c++)"std::pair::pair(CPLString&, CPLString&)@Base" 2.1.1 1 @@ -3744,8 +3750,6 @@ (c++)"std::pair::~pair()@Base" 1.9.0 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.1 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.0 1 @@ -3776,6 +3780,7 @@ (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const*&)@Base" 2.4.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::insert(__gnu_cxx::__normal_iterator > >, CPLString const&)@Base" 2.3.0 1 + (c++)"std::vector >::reserve(unsigned long)@Base" 2.4.1 1 (c++)"std::vector >::push_back(CPLString const&)@Base" 2.2.2 1 (c++)"std::vector >::vector(std::vector > const&)@Base" 1.10.1 1 (c++)"std::vector >::vector(std::vector > const&)@Base" 1.10.1 1 @@ -3802,7 +3807,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.1 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3816,6 +3820,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3828,13 +3833,12 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLayer* const&)@Base" 2.2.2 1 @@ -3896,7 +3900,6 @@ (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, bool>, std::allocator, bool> > >::_M_realloc_insert, bool> >(__gnu_cxx::__normal_iterator, bool>*, std::vector, bool>, std::allocator, bool> > > >, std::pair, bool>&&)@Base" 2.2.2 1 - (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert const&>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair const&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 @@ -4005,6 +4008,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4129,6 +4133,7 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.1 1 @@ -4143,16 +4148,17 @@ (c++)"std::_Rb_tree_iterator, std::allocator > const, long long> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, long long> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, long long> >*)@Base" 2.3.0 1 + (c++)"std::_Rb_tree_iterator > > > std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(OGRFeature* const&)@Base" 2.1.3 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.1.3 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.1 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4160,9 +4166,9 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 @@ -4185,7 +4191,6 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRSpatialReference const* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase_aux(std::_Rb_tree_const_iterator const, char*> >)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator const, char*> > std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, char*> >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::find(std::pair const&)@Base" 1.10.1 1 @@ -4247,6 +4252,7 @@ (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.0 1 (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.1.1 1 @@ -4297,6 +4303,8 @@ (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.sparc64 gdal-2.4.2+dfsg/debian/libgdal20.symbols.sparc64 --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.sparc64 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.sparc64 2019-07-07 12:07:12.000000000 +0000 @@ -48,6 +48,7 @@ (c++)"PamHistogramToXMLTree(double, double, int, unsigned long long*, int, int)@Base" 2.0.2 1 (c++)"VSICreateGZipWritable(VSIVirtualHandle*, int, int)@Base" 2.0.2 1 (c++)"CPLParseRFC822DateTime(char const*, int*, int*, int*, int*, int*, int*, int*, int*)@Base" 2.3.0 1 + (c++)"CPLQuotedSQLIdentifier(char const*)@Base" 2.4.1 1 (c++)"OGRGeometryFromHexEWKB(char const*, int*, int)@Base" 2.0.2 1 (c++)"OGRPGCommonLaunderName(char const*, char const*)@Base" 2.0.2 1 (c++)"OGRParseRFC822DateTime(char const*, OGRField*)@Base" 2.0.2 1 @@ -140,6 +141,7 @@ (c++)"GDALDriver::SetMetadataItem(char const*, char const*, char const*)@Base" 2.0.2 1 (c++)"GDALDriver::DefaultCopyFiles(char const*, char const*)@Base" 2.0.2 1 (c++)"GDALDriver::DefaultCopyMasks(GDALDataset*, GDALDataset*, int)@Base" 2.0.2 1 + (c++)"GDALDriver::DefaultCopyMasks(GDALDataset*, GDALDataset*, int, char const* const*, int (*)(double, char const*, void*), void*)@Base" 2.4.1 1 (c++)"GDALDriver::DefaultCreateCopy(char const*, GDALDataset*, int, char**, int (*)(double, char const*, void*), void*)@Base" 2.0.2 1 (c++)"GDALDriver::Create(char const*, int, int, int, GDALDataType, char**)@Base" 2.0.2 1 (c++)"GDALDriver::Delete(char const*)@Base" 2.0.2 1 @@ -336,6 +338,7 @@ (c++)"VRTDataset::IBuildOverviews(char const*, int, int*, int, int*, int (*)(double, char const*, void*), void*)@Base" 2.1.0 1 (c++)"VRTDataset::SetGeoTransform(double*)@Base" 2.0.2 1 (c++)"VRTDataset::SetMetadataItem(char const*, char const*, char const*)@Base" 2.0.2 1 + (c++)"VRTDataset::ExpandProxyBands()@Base" 2.4.1 1 (c++)"VRTDataset::GetGCPProjection()@Base" 2.0.2 1 (c++)"VRTDataset::GetProjectionRef()@Base" 2.0.2 1 (c++)"VRTDataset::BuildVirtualOverviews()@Base" 2.1.0 1 @@ -442,7 +445,6 @@ (c++)"GDALDataset::ProcessSQLAlterTableAlterColumn(char const*)@Base" 2.0.2 1 (c++)"GDALDataset::ProcessSQLAlterTableRenameColumn(char const*)@Base" 2.0.2 1 (c++)"GDALDataset::ValidateRasterIOOrAdviseReadParameters(char const*, int*, int, int, int, int, int, int, int, int*)@Base" 2.0.2 1 - (c++)"GDALDataset::Init(bool)@Base" 2.2.0 1 (c++)"GDALDataset::Bands::Iterator::Iterator(GDALDataset*, bool)@Base" 2.3.0 1 (c++)"GDALDataset::Bands::Iterator::Iterator(GDALDataset*, bool)@Base" 2.3.0 1 (c++)"GDALDataset::Bands::Iterator::~Iterator()@Base" 2.3.0 1 @@ -715,7 +717,6 @@ (c++)"CPLLockHolder::CPLLockHolder(_CPLLock**, CPLLockType, char const*, int)@Base" 2.0.2 1 (c++)"CPLLockHolder::~CPLLockHolder()@Base" 2.0.2 1 (c++)"CPLLockHolder::~CPLLockHolder()@Base" 2.0.2 1 - (c++)"CPLStringList::Initialize()@Base" 2.0.2 1 (c++)"CPLStringList::AddNameValue(char const*, char const*)@Base" 2.0.2 1 (c++)"CPLStringList::SetNameValue(char const*, char const*)@Base" 2.0.2 1 (c++)"CPLStringList::MakeOurOwnCopy()@Base" 2.0.2 1 @@ -894,10 +895,10 @@ (c++)"RawRasterBand::Write(void*, unsigned long, unsigned long)@Base" 2.0.2 1 (c++)"RawRasterBand::IRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*)@Base" 2.0.2 1 (c++)"RawRasterBand::SetAccess(GDALAccess)@Base" 2.0.2 1 - (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, void*, unsigned long long, int, int, GDALDataType, int, int, int)@Base" 2.0.2 1 - (c++)"RawRasterBand::RawRasterBand(void*, unsigned long long, int, int, GDALDataType, int, int, int, int, int)@Base" 2.0.2 1 - (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, void*, unsigned long long, int, int, GDALDataType, int, int, int)@Base" 2.0.2 1 - (c++)"RawRasterBand::RawRasterBand(void*, unsigned long long, int, int, GDALDataType, int, int, int, int, int)@Base" 2.0.2 1 + (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, _IO_FILE*, unsigned long long, int, int, GDALDataType, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(_IO_FILE*, unsigned long long, int, int, GDALDataType, int, int, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, _IO_FILE*, unsigned long long, int, int, GDALDataType, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(_IO_FILE*, unsigned long long, int, int, GDALDataType, int, int, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 2.0.2 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 2.0.2 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 2.0.2 1 @@ -1046,6 +1047,7 @@ (c++)"GDALRasterBand::GetNoDataValue(int*)@Base" 2.0.2 1 (c++)"GDALRasterBand::LeaveReadWrite()@Base" 2.0.2 1 (c++)"GDALRasterBand::SetNoDataValue(double)@Base" 2.0.2 1 + (c++)"GDALRasterBand::SetValidPercent(unsigned long long, unsigned long long)@Base" 2.4.1 1 (c++)"GDALRasterBand::GetCategoryNames()@Base" 2.0.2 1 (c++)"GDALRasterBand::GetOverviewCount()@Base" 2.0.2 1 (c++)"GDALRasterBand::OverviewRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*)@Base" 2.0.2 1 @@ -1074,7 +1076,6 @@ (c++)"GDALRasterBand::GetRasterSampleOverview(unsigned long long)@Base" 2.0.2 1 (c++)"GDALRasterBand::GetIndexColorTranslationTo(GDALRasterBand*, unsigned char*, int*)@Base" 2.0.2 1 (c++)"GDALRasterBand::Fill(double, double)@Base" 2.0.2 1 - (c++)"GDALRasterBand::Init(int)@Base" 2.1.0 1 (c++)"GDALRasterBand::GetBand()@Base" 2.0.2 1 (c++)"GDALRasterBand::GetScale(int*)@Base" 2.0.2 1 (c++)"GDALRasterBand::GetXSize()@Base" 2.0.2 1 @@ -1645,6 +1646,7 @@ (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 2.0.2 1 (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 2.0.2 1 (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 2.0.2 1 + (c++)"VRTWarpedDataset::FlushCache()@Base" 2.4.1 1 (c++)"VRTWarpedDataset::Initialize(void*)@Base" 2.0.2 1 (c++)"VRTWarpedDataset::GetFileList()@Base" 2.0.2 1 (c++)"VRTWarpedDataset::ProcessBlock(int, int)@Base" 2.0.2 1 @@ -1732,6 +1734,7 @@ (c++)"GDALWarpOperation::CreateDestinationBuffer(int, int, int*)@Base" 2.3.0 1 (c++)"GDALWarpOperation::CollectChunkListInternal(int, int, int, int)@Base" 2.3.0 1 (c++)"GDALWarpOperation::DestroyDestinationBuffer(void*)@Base" 2.3.0 1 + (c++)"GDALWarpOperation::ComputeSourceWindowStartingFromSource(int, int, int, int, double*, double*, double*, double*)@Base" 2.4.1 1 (c++)"GDALWarpOperation::GDALWarpOperation()@Base" 2.0.2 1 (c++)"GDALWarpOperation::GDALWarpOperation()@Base" 2.0.2 1 (c++)"GDALWarpOperation::~GDALWarpOperation()@Base" 2.0.2 1 @@ -1930,13 +1933,20 @@ (c++)"OGRMultiLineString::~OGRMultiLineString()@Base" 2.0.2 1 (c++)"OGRMultiLineString::~OGRMultiLineString()@Base" 2.0.2 1 (c++)"OGRMultiLineString::operator=(OGRMultiLineString const&)@Base" 2.1.0 1 + (c++)"CADDictionaryRecord::CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::GetNextJob(CPLWorkerThread*)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::SubmitJobs(void (*)(void*), std::vector > const&)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::WaitCompletion(int)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::DeclareJobFinished()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::WorkerThreadFunction(void*)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::Setup(int, void (*)(void*), void**)@Base" 2.1.0 1 + (c++)"CPLWorkerThreadPool::Setup(int, void (*)(void*), void**, bool)@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::SubmitJob(void (*)(void*), void*)@Base" 2.1.0 1 + (c++)"CPLWorkerThreadPool::WaitEvent()@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::CPLWorkerThreadPool()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::CPLWorkerThreadPool()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::~CPLWorkerThreadPool()@Base" 2.1.0 1 @@ -2138,6 +2148,7 @@ (c++)"GDALAllValidMaskBand::IReadBlock(int, int, void*)@Base" 2.0.2 1 (c++)"GDALAllValidMaskBand::GetMaskBand()@Base" 2.0.2 1 (c++)"GDALAllValidMaskBand::GetMaskFlags()@Base" 2.0.2 1 + (c++)"GDALAllValidMaskBand::ComputeStatistics(int, double*, double*, double*, double*, int (*)(double, char const*, void*), void*)@Base" 2.4.1 1 (c++)"GDALAllValidMaskBand::GDALAllValidMaskBand(GDALRasterBand*)@Base" 2.0.2 1 (c++)"GDALAllValidMaskBand::GDALAllValidMaskBand(GDALRasterBand*)@Base" 2.0.2 1 (c++)"GDALAllValidMaskBand::~GDALAllValidMaskBand()@Base" 2.0.2 1 @@ -2177,6 +2188,7 @@ (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 2.0.2 1 (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 2.0.2 1 (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 2.0.2 1 + (c++)"GDALProxyPoolDataset::AddSrcBand(int, GDALDataType, int, int)@Base" 2.4.1 1 (c++)"GDALProxyPoolDataset::FlushCache()@Base" 2.3.0 1 (c++)"GDALProxyPoolDataset::GetMetadata(char const*)@Base" 2.0.2 1 (c++)"GDALProxyPoolDataset::SetProjection(char const*)@Base" 2.0.2 1 @@ -2330,10 +2342,12 @@ (c++)"VSIFilesystemHandler::SupportsSparseFiles(char const*)@Base" 2.2.0 1 (c++)"VSIFilesystemHandler::HasOptimizedReadMultiRange(char const*)@Base" 2.3.0 1 (c++)"VSIFilesystemHandler::Open(char const*, char const*)@Base" 2.1.0 1 + (c++)"VSIFilesystemHandler::Sync(char const*, char const*, char const* const*, int (*)(double, char const*, void*), void*, char***)@Base" 2.4.1 1 (c++)"VSIFilesystemHandler::Mkdir(char const*, long)@Base" 2.0.2 1 (c++)"VSIFilesystemHandler::Rmdir(char const*)@Base" 2.0.2 1 (c++)"VSIFilesystemHandler::Rename(char const*, char const*)@Base" 2.0.2 1 (c++)"VSIFilesystemHandler::Unlink(char const*)@Base" 2.0.2 1 + (c++)"VSIFilesystemHandler::OpenDir(char const*, int, char const* const*)@Base" 2.4.1 1 (c++)"VSIFilesystemHandler::ReadDir(char const*)@Base" 2.0.2 1 (c++)"VSIFilesystemHandler::ReadDirEx(char const*, int)@Base" 2.1.0 1 (c++)"CPLConfigOptionSetter::CPLConfigOptionSetter(char const*, char const*, bool)@Base" 2.3.0 1 @@ -2380,7 +2394,7 @@ (c++)"CPLJSonStreamingParser::SetMaxStringSize(unsigned long)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::StartArrayMember()@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::StartObjectMember(char const*, unsigned long)@Base" 2.3.0 1 - (c++)"CPLJSonStreamingParser::EmitUnexpectedChar(char)@Base" 2.3.0 1 + (c++)"CPLJSonStreamingParser::EmitUnexpectedChar(char, char const*)@Base" 2.4.1 1 (c++)"CPLJSonStreamingParser::GetSerializedString[abi:cxx11](char const*)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::CheckAndEmitTrueFalseOrNull(char)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::Null()@Base" 2.3.0 1 @@ -2449,7 +2463,6 @@ (c++)"GDALProxyPoolRasterBand::RefUnderlyingRasterBand()@Base" 2.0.2 1 (c++)"GDALProxyPoolRasterBand::AddSrcMaskBandDescription(GDALDataType, int, int)@Base" 2.0.2 1 (c++)"GDALProxyPoolRasterBand::UnrefUnderlyingRasterBand(GDALRasterBand*)@Base" 2.0.2 1 - (c++)"GDALProxyPoolRasterBand::Init()@Base" 2.0.2 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, GDALRasterBand*)@Base" 2.0.2 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, int, GDALDataType, int, int)@Base" 2.0.2 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, GDALRasterBand*)@Base" 2.0.2 1 @@ -2541,15 +2554,15 @@ (c++)"OGRDefaultConstGeometryVisitor::~OGRDefaultConstGeometryVisitor()@Base" 2.3.0 1 (c++)"GDALDefaultRasterAttributeTable::SetRowCount(int)@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::CreateColumn(char const*, GDALRATFieldType, GDALRATFieldUsage)@Base" 2.0.2 1 + (c++)"GDALDefaultRasterAttributeTable::SetTableType(GDALRATTableType)@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::AnalyseColumns()@Base" 2.0.2 1 + (c++)"GDALDefaultRasterAttributeTable::RemoveStatistics()@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::SetLinearBinning(double, double)@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::ChangesAreWrittenToFile()@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, char const*)@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, double)@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, int)@Base" 2.0.2 1 - (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable(GDALDefaultRasterAttributeTable const&)@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable()@Base" 2.0.2 1 - (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable(GDALDefaultRasterAttributeTable const&)@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable()@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::~GDALDefaultRasterAttributeTable()@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::~GDALDefaultRasterAttributeTable()@Base" 2.0.2 1 @@ -2569,6 +2582,9 @@ (c++)"CADRay::~CADRay()@Base" 2.3.0 1 (c++)"CADRay::~CADRay()@Base" 2.3.0 1 (c++)"CADRay::~CADRay()@Base" 2.3.0 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 (c++)"CADFile::ReadTables(CADFile::OpenOptions)@Base" 2.2.0 1 (c++)"CADFile::isReadingUnsupportedGeometries()@Base" 2.2.0 1 (c++)"CADFile::GetLayer(unsigned long)@Base" 2.2.0 1 @@ -2963,8 +2979,8 @@ (c++)"S57Writer::WriteCompleteFeature(OGRFeature*)@Base" 2.0.2 1 (c++)"S57Writer::Close()@Base" 2.0.2 1 (c++)"S57Writer::WriteATTF(DDFRecord*, OGRFeature*)@Base" 2.0.2 1 - (c++)"S57Writer::WriteDSID(int, int, char const*, char const*, char const*, char const*, char const*, char const*, int, char const*, int, int, int, int, int, int)@Base" 2.0.2 1 - (c++)"S57Writer::WriteDSPM(int, int, int, int)@Base" 2.0.2 1 + (c++)"S57Writer::WriteDSID(int, int, char const*, char const*, char const*, char const*, char const*, char const*, int, char const*, int, int, int, int, int, int, int, int)@Base" 2.4.1 1 + (c++)"S57Writer::WriteDSPM(int, int, int, int, int, int)@Base" 2.4.1 1 (c++)"S57Writer::S57Writer()@Base" 2.0.2 1 (c++)"S57Writer::S57Writer()@Base" 2.0.2 1 (c++)"S57Writer::~S57Writer()@Base" 2.0.2 1 @@ -3229,6 +3245,7 @@ (c++)"OGRFeatureDefn::GetGeomFieldIndex(char const*) const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::IsGeometryIgnored() const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::ComputeMapForSetFrom(OGRFeatureDefn const*, bool) const@Base" 2.3.0 1 + (c++)"OGRFeatureDefn::GetFieldIndexCaseSensitive(char const*) const@Base" 2.4.1 1 (c++)"OGRFeatureDefn::Clone() const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::IsSame(OGRFeatureDefn const*) const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::GetName() const@Base" 2.3.0 1 @@ -3386,6 +3403,7 @@ (c++)"OGRMultiLineString::hasCurveGeometry(int) const@Base" 2.0.2 1 (c++)"OGRMultiLineString::isCompatibleSubType(OGRwkbGeometryType) const@Base" 2.0.2 1 (c++)"OGRMultiLineString::accept(IOGRConstGeometryVisitor*) const@Base" 2.3.0 1 + (c++)"CADDictionaryRecord::getType() const@Base" 2.4.1 1 (c++)"OGRSpatialReference::GetTOWGS84(double*, int) const@Base" 2.0.2 1 (c++)"OGRSpatialReference::GetUTMZone(int*) const@Base" 2.0.2 1 (c++)"OGRSpatialReference::IsCompound() const@Base" 2.0.2 1 @@ -3499,6 +3517,7 @@ (c++)"OGRGeometryUniquePtrDeleter::operator()(OGRGeometry*) const@Base" 2.3.0 1 (c++)"GDALDefaultRasterAttributeTable::GetRowCount() const@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::GetNameOfCol(int) const@Base" 2.0.2 1 + (c++)"GDALDefaultRasterAttributeTable::GetTableType() const@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::GetTypeOfCol(int) const@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::GetColOfUsage(GDALRATFieldUsage) const@Base" 2.0.2 1 (c++)"GDALDefaultRasterAttributeTable::GetRowOfValue(double) const@Base" 2.0.2 1 @@ -3633,6 +3652,7 @@ (c++)"CPLString::ifind(std::__cxx11::basic_string, std::allocator > const&, unsigned long) const@Base" 2.0.2 1 (c++)"CPLString::endsWith(std::__cxx11::basic_string, std::allocator > const&) const@Base" 2.3.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_find_before_node(unsigned long, std::__cxx11::basic_string, std::allocator > const&, unsigned long) const@Base" 2.3.0 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_find_before_node(unsigned long, std::__cxx11::basic_string, std::allocator > const&, unsigned long) const@Base" 2.4.1 1 (c++)"std::ctype::do_widen(char) const@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::find(CPLString const&) const@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&) const@Base" 2.3.0 1 @@ -3647,8 +3667,13 @@ (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::clear()@Base" 2.2.0 1 (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned long, unsigned long const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned long)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.4.1 1 (c++)"std::_Deque_base >::_M_initialize_map(unsigned long)@Base" 2.2.0 1 (c++)"std::_Deque_base >::~_Deque_base()@Base" 2.2.0 1 (c++)"std::_Deque_base >::~_Deque_base()@Base" 2.2.0 1 @@ -3670,23 +3695,42 @@ (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 + (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.0.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.0.2 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.4.1 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.0.2 1 (c++)"std::map >, std::less, std::allocator > > > >::operator[](CPLString const&)@Base" 2.0.2 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.2.0 1 - (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.2.0 1 (c++)"std::map, std::allocator > >::operator[](OGRGeomFieldDefn* const&)@Base" 2.3.2 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer* const&)@Base" 2.0.2 1 @@ -3704,10 +3748,10 @@ (c++)"std::pair::~pair()@Base" 2.0.2 1 (c++)"std::pair > >::~pair()@Base" 2.0.2 1 (c++)"std::pair > >::~pair()@Base" 2.0.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 + (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.1 1 + (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.1 1 (c++)"void std::deque >::_M_push_back_aux(long long const&)@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSONObject&&)@Base" 2.3.0 1 (c++)"std::vector >::~vector()@Base" 2.3.0 1 @@ -3724,11 +3768,13 @@ (c++)"std::vector >::~vector()@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CADVector const&)@Base" 2.3.0 1 (c++)"std::vector >::reserve(unsigned long)@Base" 2.3.0 1 - (c++)"std::vector >::push_back(CADVector const&)@Base" 2.3.2 1 (c++)"void std::vector >::emplace_back(CPLString&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const*&&)@Base" 2.4.1 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const (&) [2])@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLString const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const*&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::reserve(unsigned long)@Base" 2.2.0 1 (c++)"std::vector >::push_back(CPLString const&)@Base" 2.2.2 1 @@ -3738,6 +3784,7 @@ (c++)"std::vector >::~vector()@Base" 2.0.2 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 2.0.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, VRTWarpedDataset::VerticalShiftGrid const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::ArrayState&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::MemberState&&)@Base" 2.3.0 1 (c++)"void std::vector >::emplace_back(CPLJSonStreamingParser::State&&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::State&&)@Base" 2.3.0 1 @@ -3748,6 +3795,7 @@ (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::emplace_back, std::allocator > >(std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator > const&>(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.2.2 1 + (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, char*&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator >&>(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator >&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator > >(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.2.2 1 (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::~vector()@Base" 2.0.2 1 @@ -3755,7 +3803,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.2 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3769,6 +3816,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.1.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3781,13 +3829,12 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.1.3 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.0 1 @@ -3844,23 +3891,24 @@ (c++)"std::vector > >, std::allocator > > > >::~vector()@Base" 2.3.2 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 + (c++)"void std::vector, std::allocator >, std::shared_ptr >, std::allocator, std::allocator >, std::shared_ptr > > >::_M_realloc_insert, std::allocator >, std::shared_ptr >&>(__gnu_cxx::__normal_iterator, std::allocator >, std::shared_ptr >*, std::vector, std::allocator >, std::shared_ptr >, std::allocator, std::allocator >, std::shared_ptr > > > >, std::pair, std::allocator >, std::shared_ptr >&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > >::emplace_back, std::allocator >, double> >(std::pair, std::allocator >, double>&&)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > >::_M_realloc_insert, std::allocator >, double> >(__gnu_cxx::__normal_iterator, std::allocator >, double>*, std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > > >, std::pair, std::allocator >, double>&&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, bool>, std::allocator, bool> > >::_M_realloc_insert, bool> >(__gnu_cxx::__normal_iterator, bool>*, std::vector, bool>, std::allocator, bool> > > >, std::pair, bool>&&)@Base" 2.2.2 1 - (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert const&>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair const&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.0.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 + (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.4.1 1 (c++)"std::vector, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > >, std::allocator, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > > > >::~vector()@Base" 2.2.0 1 (c++)"std::vector, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > >, std::allocator, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > > > >::~vector()@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 - (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.1.1 1 - (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.1.0 1 + (c++)"std::vector, std::allocator > >::_M_default_append(unsigned long)@Base" 2.4.1 1 + (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_assign_aux<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_range_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag)@Base" 2.2.0 1 @@ -3875,14 +3923,18 @@ (c++)"std::vector >::vector(std::initializer_list, std::allocator const&)@Base" 2.2.0 1 (c++)"std::vector >::~vector()@Base" 2.2.0 1 (c++)"std::vector >::~vector()@Base" 2.2.0 1 + (c++)"void std::vector >::emplace_back(double const&)@Base" 2.4.1 1 + (c++)"void std::vector >::emplace_back(double&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(double&&)@Base" 2.1.1 1 (c++)"void std::vector >::_M_assign_aux(double const*, double const*, std::forward_iterator_tag)@Base" 2.3.2 1 (c++)"void std::vector >::_M_range_insert<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::forward_iterator_tag)@Base" 2.3.0 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, double const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, double&&)@Base" 2.2.2 1 + (c++)"std::vector >::resize(unsigned long)@Base" 2.4.1 1 (c++)"std::vector >::reserve(unsigned long)@Base" 2.0.2 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 2.0.2 1 + (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, float const&)@Base" 2.3.0 1 (c++)"void std::vector >::emplace_back(unsigned char&&)@Base" 2.2.0 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 @@ -3897,6 +3949,7 @@ (c++)"void std::vector >::emplace_back(unsigned int&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_fill_assign(unsigned long, unsigned int const&)@Base" 2.3.2 1 (c++)"std::vector >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned long, unsigned int const&)@Base" 2.0.2 1 + (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, unsigned int&&)@Base" 2.4.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.1.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, unsigned int const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, unsigned int&&)@Base" 2.2.2 1 @@ -3917,6 +3970,7 @@ (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, long long const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, long long&&)@Base" 2.2.2 1 + (c++)"std::vector >::reserve(unsigned long)@Base" 2.4.1 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 2.2.0 1 (c++)"void std::vector >::emplace_back(unsigned long long&&)@Base" 2.1.1 1 (c++)"std::vector >::_M_default_append(unsigned long)@Base" 2.3.2 1 @@ -3958,6 +4012,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.0.2 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4104,10 +4159,10 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*>, std::_Select1st, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >*> >*)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::equal_range(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 - (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator >&&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator >&&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 + (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, std::__cxx11::basic_string, std::allocator > >, std::_Select1st, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > const, std::__cxx11::basic_string, std::allocator > > >*)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_unique_pos(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, double>, std::_Select1st, std::allocator > const, double> >, std::less, std::allocator > >, std::allocator, std::allocator > const, double> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > const, double> >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 @@ -4133,11 +4188,12 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, GDALDataset* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRMutexedLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 @@ -4145,16 +4201,15 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.1.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRLayer* const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.0.2 1 @@ -4162,6 +4217,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 @@ -4182,6 +4238,7 @@ (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector > > >, std::pair const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_erase(std::_Rb_tree_node const, std::vector > > >*)@Base" 2.0.2 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::find(std::pair const&)@Base" 2.1.0 1 @@ -4195,10 +4252,12 @@ (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, OGRCoordinateTransformation*> >, std::pair const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_erase(std::_Rb_tree_node const, OGRCoordinateTransformation*> >*)@Base" 2.0.2 1 + (c++)"std::_Rb_tree_iterator const, std::vector, bool>, std::allocator, bool> > > > > std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >* std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_copy, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node>(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_erase(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_erase(std::_Rb_tree_node const, int> >*)@Base" 2.0.2 1 @@ -4223,6 +4282,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 @@ -4239,7 +4299,11 @@ (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > > >, int const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > > >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > > >, int const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.0.2 1 @@ -4247,6 +4311,7 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 @@ -4286,20 +4351,23 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.1.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.0.2 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.3.2 1 (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.3.2 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4307,16 +4375,18 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(long long const&)@Base" 2.1.1 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(long long&&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree_node* std::_Rb_tree, std::less, std::allocator >::_M_copy, std::less, std::allocator >::_Alloc_node>(std::_Rb_tree_node const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::less, std::allocator >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.1.0 1 (c++)"std::__detail::_Hash_node, std::allocator >, true>* std::__detail::_Hashtable_alloc, std::allocator >, true> > >::_M_allocate_node, std::allocator > const&>(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 - (c++)"bool std::operator< (std::pair const&, std::pair const&)@Base" 2.3.2 1 + (c++)"std::__detail::_Map_base, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.1.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(char const*, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator > const&, char const*)@Base" 2.0.2 1 @@ -4387,6 +4457,7 @@ (c++)"typeinfo for OGRLayerDecorator@Base" 2.0.2 1 (c++)"typeinfo for GDALNoDataMaskBand@Base" 2.0.2 1 (c++)"typeinfo for OGRMultiLineString@Base" 2.0.2 1 + (c++)"typeinfo for CADDictionaryRecord@Base" 2.4.1 1 (c++)"typeinfo for GDALMDReaderManager@Base" 2.0.2 1 (c++)"typeinfo for GDALProxyRasterBand@Base" 2.0.2 1 (c++)"typeinfo for IOGRGeometryVisitor@Base" 2.3.0 1 @@ -4418,6 +4489,7 @@ (c++)"typeinfo for CADArc@Base" 2.3.0 1 (c++)"typeinfo for CADRay@Base" 2.3.0 1 (c++)"typeinfo for CPLErr@Base" 2.1.0 1 + (c++)"typeinfo for VSIDIR@Base" 2.4.1 1 (c++)"typeinfo for CADFile@Base" 2.2.0 1 (c++)"typeinfo for CADLine@Base" 2.3.0 1 (c++)"typeinfo for CADText@Base" 2.3.0 1 @@ -4447,7 +4519,10 @@ (c++)"typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo name for CADEllipse@Base" 2.3.0 1 (c++)"typeinfo name for CADPoint3D@Base" 2.3.0 1 @@ -4515,6 +4590,7 @@ (c++)"typeinfo name for OGRLayerDecorator@Base" 2.0.2 1 (c++)"typeinfo name for GDALNoDataMaskBand@Base" 2.0.2 1 (c++)"typeinfo name for OGRMultiLineString@Base" 2.0.2 1 + (c++)"typeinfo name for CADDictionaryRecord@Base" 2.4.1 1 (c++)"typeinfo name for GDALMDReaderManager@Base" 2.0.2 1 (c++)"typeinfo name for GDALProxyRasterBand@Base" 2.0.2 1 (c++)"typeinfo name for IOGRGeometryVisitor@Base" 2.3.0 1 @@ -4546,6 +4622,7 @@ (c++)"typeinfo name for CADArc@Base" 2.3.0 1 (c++)"typeinfo name for CADRay@Base" 2.3.0 1 (c++)"typeinfo name for CPLErr@Base" 2.1.0 1 + (c++)"typeinfo name for VSIDIR@Base" 2.4.1 1 (c++)"typeinfo name for CADFile@Base" 2.2.0 1 (c++)"typeinfo name for CADLine@Base" 2.3.0 1 (c++)"typeinfo name for CADText@Base" 2.3.0 1 @@ -4575,8 +4652,12 @@ (c++)"typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo name for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 + (c++)"typeinfo name for std::_Sp_make_shared_tag@Base" 2.4.1 1 (c++)"vtable for CADEllipse@Base" 2.3.0 1 (c++)"vtable for CADPoint3D@Base" 2.3.0 1 (c++)"vtable for CADXRecord@Base" 2.2.0 1 @@ -4643,6 +4724,7 @@ (c++)"vtable for OGRLayerDecorator@Base" 2.0.2 1 (c++)"vtable for GDALNoDataMaskBand@Base" 2.0.2 1 (c++)"vtable for OGRMultiLineString@Base" 2.0.2 1 + (c++)"vtable for CADDictionaryRecord@Base" 2.4.1 1 (c++)"vtable for GDALMDReaderManager@Base" 2.0.2 1 (c++)"vtable for GDALProxyRasterBand@Base" 2.0.2 1 (c++)"vtable for OGRSpatialReference@Base" 2.0.2 1 @@ -4654,6 +4736,7 @@ (c++)"vtable for OGRPolyhedralSurface@Base" 2.2.0 1 (c++)"vtable for VRTDerivedRasterBand@Base" 2.0.2 1 (c++)"vtable for VRTSourcedRasterBand@Base" 2.0.2 1 + (c++)"vtable for VSIFilesystemHandler@Base" 2.4.1 1 (c++)"vtable for OGRGeometryCollection@Base" 2.0.2 1 (c++)"vtable for CPLJSonStreamingParser@Base" 2.3.0 1 (c++)"vtable for GDALJP2AbstractDataset@Base" 2.0.2 1 @@ -4669,6 +4752,7 @@ (c++)"vtable for GDALDefaultRasterAttributeTable@Base" 2.0.2 1 (c++)"vtable for CADArc@Base" 2.3.0 1 (c++)"vtable for CADRay@Base" 2.3.0 1 + (c++)"vtable for VSIDIR@Base" 2.4.1 1 (c++)"vtable for CADFile@Base" 2.2.0 1 (c++)"vtable for CADLine@Base" 2.3.0 1 (c++)"vtable for CADText@Base" 2.3.0 1 @@ -4693,6 +4777,10 @@ (c++)"vtable for OGRFeature::FieldNotFoundException@Base" 2.3.0 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"vtable for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"vtable for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"vtable for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"VRTComplexSource::RasterIOInternal(int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*, GDALDataType)::bHasWarned@Base" 2.2.3 1 (c++)"VRTComplexSource::RasterIOInternal(int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*, GDALDataType)::bHasWarned@Base" 2.2.3 1 + (c++)"std::_Sp_make_shared_tag::_S_ti()::__tag@Base" 2.4.1 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal20.symbols.x32 gdal-2.4.2+dfsg/debian/libgdal20.symbols.x32 --- gdal-2.4.0+dfsg/debian/libgdal20.symbols.x32 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal20.symbols.x32 2019-07-07 12:07:12.000000000 +0000 @@ -48,6 +48,7 @@ (c++)"PamHistogramToXMLTree(double, double, int, unsigned long long*, int, int)@Base" 2.0.2 1 (c++)"VSICreateGZipWritable(VSIVirtualHandle*, int, int)@Base" 2.0.2 1 (c++)"CPLParseRFC822DateTime(char const*, int*, int*, int*, int*, int*, int*, int*, int*)@Base" 2.3.0 1 + (c++)"CPLQuotedSQLIdentifier(char const*)@Base" 2.4.1 1 (c++)"OGRGeometryFromHexEWKB(char const*, int*, int)@Base" 2.0.2 1 (c++)"OGRPGCommonLaunderName(char const*, char const*)@Base" 2.0.2 1 (c++)"OGRParseRFC822DateTime(char const*, OGRField*)@Base" 2.0.2 1 @@ -140,6 +141,7 @@ (c++)"GDALDriver::SetMetadataItem(char const*, char const*, char const*)@Base" 2.0.2 1 (c++)"GDALDriver::DefaultCopyFiles(char const*, char const*)@Base" 1.10.1 1 (c++)"GDALDriver::DefaultCopyMasks(GDALDataset*, GDALDataset*, int)@Base" 1.10.1 1 + (c++)"GDALDriver::DefaultCopyMasks(GDALDataset*, GDALDataset*, int, char const* const*, int (*)(double, char const*, void*), void*)@Base" 2.4.1 1 (c++)"GDALDriver::DefaultCreateCopy(char const*, GDALDataset*, int, char**, int (*)(double, char const*, void*), void*)@Base" 1.10.1 1 (c++)"GDALDriver::Create(char const*, int, int, int, GDALDataType, char**)@Base" 1.10.1 1 (c++)"GDALDriver::Delete(char const*)@Base" 1.10.1 1 @@ -336,6 +338,7 @@ (c++)"VRTDataset::IBuildOverviews(char const*, int, int*, int, int*, int (*)(double, char const*, void*), void*)@Base" 2.1.0 1 (c++)"VRTDataset::SetGeoTransform(double*)@Base" 1.10.1 1 (c++)"VRTDataset::SetMetadataItem(char const*, char const*, char const*)@Base" 1.10.1 1 + (c++)"VRTDataset::ExpandProxyBands()@Base" 2.4.1 1 (c++)"VRTDataset::GetGCPProjection()@Base" 1.10.1 1 (c++)"VRTDataset::GetProjectionRef()@Base" 1.10.1 1 (c++)"VRTDataset::BuildVirtualOverviews()@Base" 2.1.0 1 @@ -442,7 +445,6 @@ (c++)"GDALDataset::ProcessSQLAlterTableAlterColumn(char const*)@Base" 2.0.2 1 (c++)"GDALDataset::ProcessSQLAlterTableRenameColumn(char const*)@Base" 2.0.2 1 (c++)"GDALDataset::ValidateRasterIOOrAdviseReadParameters(char const*, int*, int, int, int, int, int, int, int, int*)@Base" 1.11.0 1 - (c++)"GDALDataset::Init(bool)@Base" 2.2.0 1 (c++)"GDALDataset::Bands::Iterator::Iterator(GDALDataset*, bool)@Base" 2.3.0 1 (c++)"GDALDataset::Bands::Iterator::Iterator(GDALDataset*, bool)@Base" 2.3.0 1 (c++)"GDALDataset::Bands::Iterator::~Iterator()@Base" 2.3.0 1 @@ -715,7 +717,6 @@ (c++)"CPLLockHolder::CPLLockHolder(_CPLLock**, CPLLockType, char const*, int)@Base" 2.0.2 1 (c++)"CPLLockHolder::~CPLLockHolder()@Base" 2.0.2 1 (c++)"CPLLockHolder::~CPLLockHolder()@Base" 2.0.2 1 - (c++)"CPLStringList::Initialize()@Base" 1.10.1 1 (c++)"CPLStringList::AddNameValue(char const*, char const*)@Base" 1.10.1 1 (c++)"CPLStringList::SetNameValue(char const*, char const*)@Base" 1.10.1 1 (c++)"CPLStringList::MakeOurOwnCopy()@Base" 1.10.1 1 @@ -894,10 +895,10 @@ (c++)"RawRasterBand::Write(void*, unsigned int, unsigned int)@Base" 1.10.1 1 (c++)"RawRasterBand::IRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*)@Base" 2.0.2 1 (c++)"RawRasterBand::SetAccess(GDALAccess)@Base" 1.10.1 1 - (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, void*, unsigned long long, int, int, GDALDataType, int, int, int)@Base" 1.10.1 1 - (c++)"RawRasterBand::RawRasterBand(void*, unsigned long long, int, int, GDALDataType, int, int, int, int, int)@Base" 1.10.1 1 - (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, void*, unsigned long long, int, int, GDALDataType, int, int, int)@Base" 1.10.1 1 - (c++)"RawRasterBand::RawRasterBand(void*, unsigned long long, int, int, GDALDataType, int, int, int, int, int)@Base" 1.10.1 1 + (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, _IO_FILE*, unsigned long long, int, int, GDALDataType, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(_IO_FILE*, unsigned long long, int, int, GDALDataType, int, int, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(GDALDataset*, int, _IO_FILE*, unsigned long long, int, int, GDALDataType, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 + (c++)"RawRasterBand::RawRasterBand(_IO_FILE*, unsigned long long, int, int, GDALDataType, int, int, int, RawRasterBand::OwnFP)@Base" 2.4.1 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 1.10.1 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 1.10.1 1 (c++)"RawRasterBand::~RawRasterBand()@Base" 1.10.1 1 @@ -1046,6 +1047,7 @@ (c++)"GDALRasterBand::GetNoDataValue(int*)@Base" 1.10.1 1 (c++)"GDALRasterBand::LeaveReadWrite()@Base" 2.0.2 1 (c++)"GDALRasterBand::SetNoDataValue(double)@Base" 1.10.1 1 + (c++)"GDALRasterBand::SetValidPercent(unsigned long long, unsigned long long)@Base" 2.4.1 1 (c++)"GDALRasterBand::GetCategoryNames()@Base" 1.10.1 1 (c++)"GDALRasterBand::GetOverviewCount()@Base" 1.10.1 1 (c++)"GDALRasterBand::OverviewRasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*)@Base" 2.0.2 1 @@ -1074,7 +1076,6 @@ (c++)"GDALRasterBand::GetRasterSampleOverview(unsigned long long)@Base" 2.0.2 1 (c++)"GDALRasterBand::GetIndexColorTranslationTo(GDALRasterBand*, unsigned char*, int*)@Base" 1.10.1 1 (c++)"GDALRasterBand::Fill(double, double)@Base" 1.10.1 1 - (c++)"GDALRasterBand::Init(int)@Base" 2.1.0 1 (c++)"GDALRasterBand::GetBand()@Base" 1.10.1 1 (c++)"GDALRasterBand::GetScale(int*)@Base" 1.10.1 1 (c++)"GDALRasterBand::GetXSize()@Base" 1.10.1 1 @@ -1645,6 +1646,7 @@ (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 1.10.1 1 (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 1.10.1 1 (c++)"VRTRawRasterBand::~VRTRawRasterBand()@Base" 1.10.1 1 + (c++)"VRTWarpedDataset::FlushCache()@Base" 2.4.1 1 (c++)"VRTWarpedDataset::Initialize(void*)@Base" 1.10.1 1 (c++)"VRTWarpedDataset::GetFileList()@Base" 1.10.1 1 (c++)"VRTWarpedDataset::ProcessBlock(int, int)@Base" 1.10.1 1 @@ -1732,6 +1734,7 @@ (c++)"GDALWarpOperation::CreateDestinationBuffer(int, int, int*)@Base" 2.3.0 1 (c++)"GDALWarpOperation::CollectChunkListInternal(int, int, int, int)@Base" 2.3.0 1 (c++)"GDALWarpOperation::DestroyDestinationBuffer(void*)@Base" 2.3.0 1 + (c++)"GDALWarpOperation::ComputeSourceWindowStartingFromSource(int, int, int, int, double*, double*, double*, double*)@Base" 2.4.1 1 (c++)"GDALWarpOperation::GDALWarpOperation()@Base" 1.10.1 1 (c++)"GDALWarpOperation::GDALWarpOperation()@Base" 1.10.1 1 (c++)"GDALWarpOperation::~GDALWarpOperation()@Base" 1.10.1 1 @@ -1930,13 +1933,20 @@ (c++)"OGRMultiLineString::~OGRMultiLineString()@Base" 1.10.1 1 (c++)"OGRMultiLineString::~OGRMultiLineString()@Base" 1.10.1 1 (c++)"OGRMultiLineString::operator=(OGRMultiLineString const&)@Base" 2.1.0 1 + (c++)"CADDictionaryRecord::CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 + (c++)"CADDictionaryRecord::~CADDictionaryRecord()@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::GetNextJob(CPLWorkerThread*)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::SubmitJobs(void (*)(void*), std::vector > const&)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::WaitCompletion(int)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::DeclareJobFinished()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::WorkerThreadFunction(void*)@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::Setup(int, void (*)(void*), void**)@Base" 2.1.0 1 + (c++)"CPLWorkerThreadPool::Setup(int, void (*)(void*), void**, bool)@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::SubmitJob(void (*)(void*), void*)@Base" 2.1.0 1 + (c++)"CPLWorkerThreadPool::WaitEvent()@Base" 2.4.1 1 (c++)"CPLWorkerThreadPool::CPLWorkerThreadPool()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::CPLWorkerThreadPool()@Base" 2.1.0 1 (c++)"CPLWorkerThreadPool::~CPLWorkerThreadPool()@Base" 2.1.0 1 @@ -2138,6 +2148,7 @@ (c++)"GDALAllValidMaskBand::IReadBlock(int, int, void*)@Base" 1.10.1 1 (c++)"GDALAllValidMaskBand::GetMaskBand()@Base" 1.10.1 1 (c++)"GDALAllValidMaskBand::GetMaskFlags()@Base" 1.10.1 1 + (c++)"GDALAllValidMaskBand::ComputeStatistics(int, double*, double*, double*, double*, int (*)(double, char const*, void*), void*)@Base" 2.4.1 1 (c++)"GDALAllValidMaskBand::GDALAllValidMaskBand(GDALRasterBand*)@Base" 1.10.1 1 (c++)"GDALAllValidMaskBand::GDALAllValidMaskBand(GDALRasterBand*)@Base" 1.10.1 1 (c++)"GDALAllValidMaskBand::~GDALAllValidMaskBand()@Base" 1.10.1 1 @@ -2177,6 +2188,7 @@ (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 1.11.0 1 (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 1.11.0 1 (c++)"GDALGeorefPamDataset::~GDALGeorefPamDataset()@Base" 1.11.0 1 + (c++)"GDALProxyPoolDataset::AddSrcBand(int, GDALDataType, int, int)@Base" 2.4.1 1 (c++)"GDALProxyPoolDataset::FlushCache()@Base" 2.3.0 1 (c++)"GDALProxyPoolDataset::GetMetadata(char const*)@Base" 1.10.1 1 (c++)"GDALProxyPoolDataset::SetProjection(char const*)@Base" 1.10.1 1 @@ -2330,10 +2342,12 @@ (c++)"VSIFilesystemHandler::SupportsSparseFiles(char const*)@Base" 2.2.0 1 (c++)"VSIFilesystemHandler::HasOptimizedReadMultiRange(char const*)@Base" 2.3.0 1 (c++)"VSIFilesystemHandler::Open(char const*, char const*)@Base" 2.1.0 1 + (c++)"VSIFilesystemHandler::Sync(char const*, char const*, char const* const*, int (*)(double, char const*, void*), void*, char***)@Base" 2.4.1 1 (c++)"VSIFilesystemHandler::Mkdir(char const*, long)@Base" 1.10.1 1 (c++)"VSIFilesystemHandler::Rmdir(char const*)@Base" 1.10.1 1 (c++)"VSIFilesystemHandler::Rename(char const*, char const*)@Base" 1.10.1 1 (c++)"VSIFilesystemHandler::Unlink(char const*)@Base" 1.10.1 1 + (c++)"VSIFilesystemHandler::OpenDir(char const*, int, char const* const*)@Base" 2.4.1 1 (c++)"VSIFilesystemHandler::ReadDir(char const*)@Base" 1.10.1 1 (c++)"VSIFilesystemHandler::ReadDirEx(char const*, int)@Base" 2.1.0 1 (c++)"CPLConfigOptionSetter::CPLConfigOptionSetter(char const*, char const*, bool)@Base" 2.3.0 1 @@ -2380,7 +2394,7 @@ (c++)"CPLJSonStreamingParser::SetMaxStringSize(unsigned int)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::StartArrayMember()@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::StartObjectMember(char const*, unsigned int)@Base" 2.3.0 1 - (c++)"CPLJSonStreamingParser::EmitUnexpectedChar(char)@Base" 2.3.0 1 + (c++)"CPLJSonStreamingParser::EmitUnexpectedChar(char, char const*)@Base" 2.4.1 1 (c++)"CPLJSonStreamingParser::GetSerializedString[abi:cxx11](char const*)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::CheckAndEmitTrueFalseOrNull(char)@Base" 2.3.0 1 (c++)"CPLJSonStreamingParser::Null()@Base" 2.3.0 1 @@ -2449,7 +2463,6 @@ (c++)"GDALProxyPoolRasterBand::RefUnderlyingRasterBand()@Base" 1.10.1 1 (c++)"GDALProxyPoolRasterBand::AddSrcMaskBandDescription(GDALDataType, int, int)@Base" 1.10.1 1 (c++)"GDALProxyPoolRasterBand::UnrefUnderlyingRasterBand(GDALRasterBand*)@Base" 1.10.1 1 - (c++)"GDALProxyPoolRasterBand::Init()@Base" 1.10.1 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, GDALRasterBand*)@Base" 1.10.1 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, int, GDALDataType, int, int)@Base" 1.10.1 1 (c++)"GDALProxyPoolRasterBand::GDALProxyPoolRasterBand(GDALProxyPoolDataset*, GDALRasterBand*)@Base" 1.10.1 1 @@ -2541,15 +2554,15 @@ (c++)"OGRDefaultConstGeometryVisitor::~OGRDefaultConstGeometryVisitor()@Base" 2.3.0 1 (c++)"GDALDefaultRasterAttributeTable::SetRowCount(int)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::CreateColumn(char const*, GDALRATFieldType, GDALRATFieldUsage)@Base" 1.11.0 1 + (c++)"GDALDefaultRasterAttributeTable::SetTableType(GDALRATTableType)@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::AnalyseColumns()@Base" 1.11.0 1 + (c++)"GDALDefaultRasterAttributeTable::RemoveStatistics()@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::SetLinearBinning(double, double)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::ChangesAreWrittenToFile()@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, char const*)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, double)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::SetValue(int, int, int)@Base" 1.11.0 1 - (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable(GDALDefaultRasterAttributeTable const&)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable()@Base" 1.11.0 1 - (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable(GDALDefaultRasterAttributeTable const&)@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GDALDefaultRasterAttributeTable()@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::~GDALDefaultRasterAttributeTable()@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::~GDALDefaultRasterAttributeTable()@Base" 1.11.0 1 @@ -2569,6 +2582,9 @@ (c++)"CADRay::~CADRay()@Base" 2.3.0 1 (c++)"CADRay::~CADRay()@Base" 2.3.0 1 (c++)"CADRay::~CADRay()@Base" 2.3.0 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 + (c++)"VSIDIR::~VSIDIR()@Base" 2.4.1 1 (c++)"CADFile::ReadTables(CADFile::OpenOptions)@Base" 2.2.0 1 (c++)"CADFile::isReadingUnsupportedGeometries()@Base" 2.2.0 1 (c++)"CADFile::GetLayer(unsigned int)@Base" 2.2.0 1 @@ -2963,8 +2979,8 @@ (c++)"S57Writer::WriteCompleteFeature(OGRFeature*)@Base" 1.10.1 1 (c++)"S57Writer::Close()@Base" 1.10.1 1 (c++)"S57Writer::WriteATTF(DDFRecord*, OGRFeature*)@Base" 1.10.1 1 - (c++)"S57Writer::WriteDSID(int, int, char const*, char const*, char const*, char const*, char const*, char const*, int, char const*, int, int, int, int, int, int)@Base" 2.0.2 1 - (c++)"S57Writer::WriteDSPM(int, int, int, int)@Base" 2.0.2 1 + (c++)"S57Writer::WriteDSID(int, int, char const*, char const*, char const*, char const*, char const*, char const*, int, char const*, int, int, int, int, int, int, int, int)@Base" 2.4.1 1 + (c++)"S57Writer::WriteDSPM(int, int, int, int, int, int)@Base" 2.4.1 1 (c++)"S57Writer::S57Writer()@Base" 1.10.1 1 (c++)"S57Writer::S57Writer()@Base" 1.10.1 1 (c++)"S57Writer::~S57Writer()@Base" 1.10.1 1 @@ -3229,6 +3245,7 @@ (c++)"OGRFeatureDefn::GetGeomFieldIndex(char const*) const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::IsGeometryIgnored() const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::ComputeMapForSetFrom(OGRFeatureDefn const*, bool) const@Base" 2.3.0 1 + (c++)"OGRFeatureDefn::GetFieldIndexCaseSensitive(char const*) const@Base" 2.4.1 1 (c++)"OGRFeatureDefn::Clone() const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::IsSame(OGRFeatureDefn const*) const@Base" 2.3.0 1 (c++)"OGRFeatureDefn::GetName() const@Base" 2.3.0 1 @@ -3386,6 +3403,7 @@ (c++)"OGRMultiLineString::hasCurveGeometry(int) const@Base" 2.0.2 1 (c++)"OGRMultiLineString::isCompatibleSubType(OGRwkbGeometryType) const@Base" 2.0.2 1 (c++)"OGRMultiLineString::accept(IOGRConstGeometryVisitor*) const@Base" 2.3.0 1 + (c++)"CADDictionaryRecord::getType() const@Base" 2.4.1 1 (c++)"OGRSpatialReference::GetTOWGS84(double*, int) const@Base" 1.10.1 1 (c++)"OGRSpatialReference::GetUTMZone(int*) const@Base" 1.10.1 1 (c++)"OGRSpatialReference::IsCompound() const@Base" 1.10.1 1 @@ -3499,6 +3517,7 @@ (c++)"OGRGeometryUniquePtrDeleter::operator()(OGRGeometry*) const@Base" 2.3.0 1 (c++)"GDALDefaultRasterAttributeTable::GetRowCount() const@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GetNameOfCol(int) const@Base" 1.11.0 1 + (c++)"GDALDefaultRasterAttributeTable::GetTableType() const@Base" 2.4.1 1 (c++)"GDALDefaultRasterAttributeTable::GetTypeOfCol(int) const@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GetColOfUsage(GDALRATFieldUsage) const@Base" 1.11.0 1 (c++)"GDALDefaultRasterAttributeTable::GetRowOfValue(double) const@Base" 1.11.0 1 @@ -3633,6 +3652,7 @@ (c++)"CPLString::ifind(std::__cxx11::basic_string, std::allocator > const&, unsigned int) const@Base" 2.0.2 1 (c++)"CPLString::endsWith(std::__cxx11::basic_string, std::allocator > const&) const@Base" 2.3.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_find_before_node(unsigned int, std::__cxx11::basic_string, std::allocator > const&, unsigned int) const@Base" 2.3.0 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_find_before_node(unsigned int, std::__cxx11::basic_string, std::allocator > const&, unsigned int) const@Base" 2.4.1 1 (c++)"std::ctype::do_widen(char) const@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::find(CPLString const&) const@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&) const@Base" 2.3.0 1 @@ -3646,10 +3666,16 @@ (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::clear()@Base" 2.2.0 1 (c++)"void std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1}>(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&, std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_assign(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits > const&)::{lambda(std::__detail::_Hash_node, std::allocator >, true> const*)#1} const&)@Base" 2.2.0 1 + (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator > const&, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator > const&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned int)@Base" 2.4.1 1 (c++)"std::pair, std::allocator >, true, true>, bool> std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert, std::allocator >, std::__detail::_AllocNode, std::allocator >, true> > > >(std::__cxx11::basic_string, std::allocator >&&, std::__detail::_AllocNode, std::allocator >, true> > > const&, std::integral_constant, unsigned int)@Base" 2.3.2 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_rehash(unsigned int, unsigned int const&)@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_Hashtable(std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >&&)@Base" 2.4.1 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 (c++)"std::_Hashtable, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::allocator, std::allocator > >, std::__detail::_Identity, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.2.0 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned int, unsigned int, std::__detail::_Hash_node, std::allocator > const, int>, true>*, unsigned int)@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.4.1 1 + (c++)"std::_Hashtable, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::~_Hashtable()@Base" 2.4.1 1 (c++)"std::_Deque_base >::_M_initialize_map(unsigned int)@Base" 2.2.0 1 (c++)"std::_Deque_base >::~_Deque_base()@Base" 2.2.0 1 (c++)"std::_Deque_base >::~_Deque_base()@Base" 2.2.0 1 @@ -3671,25 +3697,46 @@ (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 + (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.4.1 1 (c++)"std::_Sp_counted_ptr::_M_destroy()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::_M_dispose()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::_M_get_deleter(std::type_info const&)@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 (c++)"std::_Sp_counted_ptr::~_Sp_counted_ptr()@Base" 2.3.0 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 + (c++)"std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 2.4.1 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 2.2.0 1 (c++)"std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()@Base" 2.2.0 1 + (c++)"CADAttrib* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > >, CADAttrib*>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, CADAttrib*)@Base" 2.4.1 1 (c++)"std::pair* std::__uninitialized_copy::__uninit_copy*>, std::pair*>(std::move_iterator*>, std::move_iterator*>, std::pair*)@Base" 2.3.2 1 (c++)"__gnu_cxx::__normal_iterator > > std::_V2::__rotate<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::random_access_iterator_tag)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.10.1 1 (c++)"std::map, std::allocator > >::~map()@Base" 1.10.1 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.2.0 1 (c++)"std::map, std::allocator > >::~map()@Base" 2.2.0 1 + (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.4.1 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 1.10.1 1 (c++)"std::map >, std::less, std::allocator > > > >::operator[](CPLString const&)@Base" 1.10.1 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.2.0 1 - (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.3.0 1 (c++)"std::map, std::allocator > >::operator[](CPLString const&)@Base" 2.1.0 1 + (c++)"std::map, std::allocator > >::operator[](CPLString&&)@Base" 2.4.1 1 + (c++)"std::map, std::allocator > >::operator[](OGRGeomFieldDefn* const&)@Base" 2.4.1 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer* const&)@Base" 2.0.2 1 (c++)"std::map, std::allocator > >::operator[](OGRLayer*&&)@Base" 2.2.0 1 (c++)"std::map, std::allocator >, std::less, std::allocator, std::allocator > > > >::map(std::initializer_list, std::allocator > > >, std::less const&, std::allocator, std::allocator > > > const&)@Base" 2.2.0 1 @@ -3705,10 +3752,10 @@ (c++)"std::pair::~pair()@Base" 1.10.1 1 (c++)"std::pair > >::~pair()@Base" 2.0.2 1 (c++)"std::pair > >::~pair()@Base" 2.0.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 - (c++)"std::pair > >::pair >&, true>(CPLString&, std::vector >&)@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 (c++)"std::pair > >::~pair()@Base" 2.3.2 1 + (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.1 1 + (c++)"std::pair, std::allocator >, std::shared_ptr >::~pair()@Base" 2.4.1 1 (c++)"void std::deque >::_M_push_back_aux(long long const&)@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSONObject&&)@Base" 2.3.0 1 (c++)"std::vector >::~vector()@Base" 2.3.0 1 @@ -3725,11 +3772,13 @@ (c++)"std::vector >::~vector()@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CADVector const&)@Base" 2.3.0 1 (c++)"std::vector >::reserve(unsigned int)@Base" 2.3.0 1 - (c++)"std::vector >::push_back(CADVector const&)@Base" 2.3.0 1 (c++)"void std::vector >::emplace_back(CPLString&&)@Base" 2.2.0 1 (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.2.0 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const*&&)@Base" 2.4.1 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const (&) [2])@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLString const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, char const*&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLString&&)@Base" 2.2.2 1 (c++)"std::vector >::insert(__gnu_cxx::__normal_iterator > >, CPLString const&)@Base" 2.3.0 1 (c++)"std::vector >::reserve(unsigned int)@Base" 2.2.0 1 @@ -3740,6 +3789,7 @@ (c++)"std::vector >::~vector()@Base" 1.10.1 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 1.10.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, VRTWarpedDataset::VerticalShiftGrid const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::ArrayState&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::MemberState&&)@Base" 2.3.0 1 (c++)"void std::vector >::emplace_back(CPLJSonStreamingParser::State&&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, CPLJSonStreamingParser::State&&)@Base" 2.3.0 1 @@ -3750,6 +3800,7 @@ (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::emplace_back, std::allocator > >(std::__cxx11::basic_string, std::allocator >&&)@Base" 2.2.0 1 (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_default_append(unsigned int)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator > const&>(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.2.2 1 + (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, char*&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator >&>(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator >&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::_M_realloc_insert, std::allocator > >(__gnu_cxx::__normal_iterator, std::allocator >*, std::vector, std::allocator >, std::allocator, std::allocator > > > >, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.2.2 1 (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::~vector()@Base" 2.0.2 1 @@ -3757,7 +3808,6 @@ (c++)"std::vector, std::allocator >, std::allocator, std::allocator > > >::operator=(std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@Base" 2.0.2 1 (c++)"void std::vector >::emplace_back(GDALJP2Box*&&)@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GDALJP2Box*&&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRFeature*&&)@Base" 2.3.2 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFeature*&&)@Base" 2.2.2 1 @@ -3771,6 +3821,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.2.0 1 (c++)"void std::vector >::emplace_back(OGRFieldDefn*&&)@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn* const&)@Base" 2.2.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRFieldDefn*&&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRDataSource* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRLinearRing*&&)@Base" 2.2.2 1 @@ -3783,13 +3834,12 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLFeatureClass* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLPropertyDefn* const&)@Base" 2.2.2 1 - (c++)"void std::vector >::emplace_back(OGRSpatialReference*&&)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference* const&)@Base" 2.3.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRSpatialReference*&&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, GMLGeometryPropertyDefn* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation* const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCoordinateTransformation*&&)@Base" 2.2.3 1 - (c++)"void std::vector >::emplace_back(OGRCurve*&&)@Base" 2.3.2 1 + (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, OGRCurve* const&)@Base" 2.4.1 1 (c++)"std::vector >::_M_erase(__gnu_cxx::__normal_iterator > >)@Base" 2.2.0 1 (c++)"void std::vector >::emplace_back(OGRLayer*&&)@Base" 2.2.0 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.0 1 @@ -3846,28 +3896,31 @@ (c++)"std::vector > >, std::allocator > > > >::~vector()@Base" 2.3.2 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 + (c++)"void std::vector, std::allocator >, std::shared_ptr >, std::allocator, std::allocator >, std::shared_ptr > > >::_M_realloc_insert, std::allocator >, std::shared_ptr >&>(__gnu_cxx::__normal_iterator, std::allocator >, std::shared_ptr >*, std::vector, std::allocator >, std::shared_ptr >, std::allocator, std::allocator >, std::shared_ptr > > > >, std::pair, std::allocator >, std::shared_ptr >&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > >::emplace_back, std::allocator >, double> >(std::pair, std::allocator >, double>&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > >::_M_realloc_insert, std::allocator >, double> >(__gnu_cxx::__normal_iterator, std::allocator >, double>*, std::vector, std::allocator >, double>, std::allocator, std::allocator >, double> > > >, std::pair, std::allocator >, double>&&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, bool>, std::allocator, bool> > >::_M_realloc_insert, bool> >(__gnu_cxx::__normal_iterator, bool>*, std::vector, bool>, std::allocator, bool> > > >, std::pair, bool>&&)@Base" 2.2.2 1 - (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.3.2 1 (c++)"std::vector, std::allocator > >::_M_default_append(unsigned int)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert const&>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair const&)@Base" 2.2.2 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 1.10.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 + (c++)"std::vector, std::allocator > >::_M_default_append(unsigned int)@Base" 2.4.1 1 (c++)"std::vector, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > >, std::allocator, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > > > >::~vector()@Base" 2.2.0 1 (c++)"std::vector, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > >, std::allocator, std::allocator >, long, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > > > > >::~vector()@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.2.2 1 - (c++)"std::vector, std::allocator > >::_M_default_append(unsigned int)@Base" 2.2.0 1 - (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.1.0 1 + (c++)"std::vector, std::allocator > >::_M_default_append(unsigned int)@Base" 2.4.1 1 + (c++)"std::vector, std::allocator > >::resize(unsigned int)@Base" 2.4.1 1 + (c++)"std::vector, std::allocator > >::operator=(std::vector, std::allocator > > const&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator > >::emplace_back >(std::pair&&)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_assign_aux<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_range_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag)@Base" 2.2.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::pair&&)@Base" 2.3.0 1 + (c++)"void std::vector, std::allocator > >::emplace_back >(std::tuple&&)@Base" 2.4.1 1 (c++)"void std::vector, std::allocator > >::_M_realloc_insert >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::tuple&&)@Base" 2.3.0 1 (c++)"std::vector >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1 (c++)"std::vector >::_M_fill_insert(std::_Bit_iterator, unsigned int, bool)@Base" 1.10.1 1 @@ -3877,14 +3930,19 @@ (c++)"std::vector >::vector(std::initializer_list, std::allocator const&)@Base" 2.2.0 1 (c++)"std::vector >::~vector()@Base" 2.2.0 1 (c++)"std::vector >::~vector()@Base" 2.2.0 1 + (c++)"void std::vector >::emplace_back(double const&)@Base" 2.4.1 1 + (c++)"void std::vector >::emplace_back(double&)@Base" 2.4.1 1 (c++)"void std::vector >::emplace_back(double&&)@Base" 2.2.0 1 (c++)"void std::vector >::_M_assign_aux(double const*, double const*, std::forward_iterator_tag)@Base" 2.3.2 1 + (c++)"std::vector >::_M_fill_assign(unsigned int, double const&)@Base" 2.4.1 1 (c++)"void std::vector >::_M_range_insert<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::forward_iterator_tag)@Base" 2.3.0 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, double const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, double&&)@Base" 2.2.2 1 + (c++)"std::vector >::resize(unsigned int)@Base" 2.4.1 1 (c++)"std::vector >::reserve(unsigned int)@Base" 1.10.1 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 1.10.1 1 + (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.4.1 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, float const&)@Base" 2.3.0 1 (c++)"void std::vector >::emplace_back(unsigned char&&)@Base" 2.2.0 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.2.0 1 @@ -3899,6 +3957,7 @@ (c++)"void std::vector >::emplace_back(unsigned int&&)@Base" 2.2.0 1 (c++)"std::vector >::_M_fill_assign(unsigned int, unsigned int const&)@Base" 2.3.2 1 (c++)"std::vector >::_M_fill_insert(__gnu_cxx::__normal_iterator > >, unsigned int, unsigned int const&)@Base" 2.0.2 1 + (c++)"std::vector >::_M_insert_rval(__gnu_cxx::__normal_iterator > >, unsigned int&&)@Base" 2.4.1 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.2.0 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, unsigned int const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, unsigned int&&)@Base" 2.2.2 1 @@ -3917,6 +3976,7 @@ (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, long long const&)@Base" 2.2.2 1 (c++)"void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, long long&&)@Base" 2.2.2 1 + (c++)"std::vector >::reserve(unsigned int)@Base" 2.4.1 1 (c++)"std::vector >::operator=(std::vector > const&)@Base" 2.2.0 1 (c++)"void std::vector >::emplace_back(unsigned long long&&)@Base" 2.2.0 1 (c++)"std::vector >::_M_default_append(unsigned int)@Base" 2.3.2 1 @@ -3957,6 +4017,7 @@ (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 2.0.2 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -3985,16 +4046,16 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair&&, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::equal_range(CPLString const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_unique >(std::pair&&)@Base" 2.2.0 1 - (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_unique >(std::pair&&)@Base" 2.2.0 1 + (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.4.1 1 + (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(CPLString const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, CPLString const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(CPLString const&)@Base" 1.10.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(CPLString const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 @@ -4112,7 +4173,7 @@ (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, int>, std::_Select1st, std::allocator > const, int> >, std::less, std::allocator > >, std::allocator, std::allocator > const, int> > >::find(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, int>, std::_Select1st, std::allocator > const, int> >, std::less, std::allocator > >, std::allocator, std::allocator > const, int> > >::erase(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, int>, std::_Select1st, std::allocator > const, int> >, std::less, std::allocator > >, std::allocator, std::allocator > const, int> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, int> >*)@Base" 2.0.2 1 - (c++)"std::pair, std::allocator > const, long> >, bool> std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long>, std::_Select1st, std::allocator > const, long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > >::_M_insert_unique, std::allocator >, long> >(std::pair, std::allocator >, long>&&)@Base" 2.2.0 1 + (c++)"std::pair, std::allocator > const, long> >, bool> std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long>, std::_Select1st, std::allocator > const, long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > >::_M_emplace_unique, std::allocator >, long> >(std::pair, std::allocator >, long>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_node, std::allocator > const, long> >* std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long>, std::_Select1st, std::allocator > const, long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > >::_M_copy, std::allocator >, std::pair, std::allocator > const, long>, std::_Select1st, std::allocator > const, long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > >::_Alloc_node>(std::_Rb_tree_node, std::allocator > const, long> > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long>, std::_Select1st, std::allocator > const, long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long>, std::_Select1st, std::allocator > const, long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long> > >::_M_erase(std::_Rb_tree_node, std::allocator > const, long> >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator, std::allocator > const, long long> > std::_Rb_tree, std::allocator >, std::pair, std::allocator > const, long long>, std::_Select1st, std::allocator > const, long long> >, std::less, std::allocator > >, std::allocator, std::allocator > const, long long> > >::_M_emplace_hint_unique, std::allocator > const&>, std::tuple<> >(std::_Rb_tree_const_iterator, std::allocator > const, long long> >, std::piecewise_construct_t const&, std::tuple, std::allocator > const&>&&, std::tuple<>&&)@Base" 2.3.2 1 @@ -4126,11 +4187,12 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(GDALDataset* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, GDALDataset* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 + (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(GMLFeatureClass* const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRMutexedLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRMutexedLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRMutexedLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRGeomFieldDefn*&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRGeomFieldDefn* const&)@Base" 2.2.0 1 @@ -4138,7 +4200,6 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 - (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(VSIFilesystemHandler* const&)@Base" 2.3.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.3.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.0.2 1 @@ -4147,7 +4208,6 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::erase(OGRLayer* const&)@Base" 2.0.2 1 @@ -4155,6 +4215,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, OGRLayer* const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&)@Base" 2.2.0 1 @@ -4172,9 +4233,11 @@ (c++)"std::_Rb_tree, std::pair const, char*>, std::_Select1st const, char*> >, std::less >, std::allocator const, char*> > >::_M_erase(std::_Rb_tree_node const, char*> >*)@Base" 1.10.1 1 (c++)"std::pair >, bool> std::_Rb_tree, std::pair, std::_Identity >, std::less >, std::allocator > >::_M_insert_unique >(std::pair&&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair, std::_Identity >, std::less >, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator const, std::vector > > > std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector > > >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector > > >, std::pair const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector > >, std::_Select1st const, std::vector > > >, std::less >, std::allocator const, std::vector > > > >::_M_erase(std::_Rb_tree_node const, std::vector > > >*)@Base" 1.11.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::find(std::pair const&)@Base" 2.1.0 1 @@ -4188,10 +4251,12 @@ (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, OGRCoordinateTransformation*> >, std::pair const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::pair const, OGRCoordinateTransformation*>, std::_Select1st const, OGRCoordinateTransformation*> >, std::less >, std::allocator const, OGRCoordinateTransformation*> > >::_M_erase(std::_Rb_tree_node const, OGRCoordinateTransformation*> >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator const, std::vector, bool>, std::allocator, bool> > > > > std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_emplace_hint_unique const&>, std::tuple<> >(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::piecewise_construct_t const&, std::tuple const&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, std::vector, bool>, std::allocator, bool> > > > >, std::pair const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >* std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_copy, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node>(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::pair const, std::vector, bool>, std::allocator, bool> > > >, std::_Select1st const, std::vector, bool>, std::allocator, bool> > > > >, std::less >, std::allocator const, std::vector, bool>, std::allocator, bool> > > > > >::_M_erase(std::_Rb_tree_node const, std::vector, bool>, std::allocator, bool> > > > >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator const, int> > std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_emplace_hint_unique&&>, std::tuple<> >(std::_Rb_tree_const_iterator const, int> >, std::piecewise_construct_t const&, std::tuple&&>&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_unique_pos(std::pair const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator const, int> >, std::pair const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::pair const, int>, std::_Select1st const, int> >, std::less >, std::allocator const, int> > >::_M_erase(std::_Rb_tree_node const, int> >*)@Base" 2.0.2 1 @@ -4208,14 +4273,15 @@ (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > > >, char const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > > >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::allocator > > >, std::_Select1st, std::allocator > > > >, std::less, std::allocator, std::allocator > > > > >::_M_erase(std::_Rb_tree_node, std::allocator > > > >*)@Base" 2.2.0 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_equal >(std::pair&&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_equal >(std::pair&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 - (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_equal >(std::pair&&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_equal >(std::pair&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.11.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.11.0 1 @@ -4232,7 +4298,11 @@ (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator, std::allocator > > >, int const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::allocator > >, std::_Select1st, std::allocator > > >, std::less, std::allocator, std::allocator > > > >::_M_erase(std::_Rb_tree_node, std::allocator > > >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_unique_pos(int const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > > >, int const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_erase(std::_Rb_tree_node > > >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.1 1 @@ -4240,6 +4310,7 @@ (c++)"std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Reuse_or_alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::operator=(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, int const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 @@ -4259,6 +4330,7 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(unsigned int const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, unsigned int const&)@Base" 2.0.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.0.2 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 @@ -4278,19 +4350,22 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.2.0 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.1.0 1 - (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.1.0 1 + (c++)"std::_Rb_tree_iterator > > std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator > >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 1.10.1 1 - (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_unique >(std::pair&&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator > >, long long const&)@Base" 2.4.1 1 + (c++)"std::_Rb_tree >, std::_Select1st > >, std::less, std::allocator > > >::_M_erase(std::_Rb_tree_node > >*)@Base" 2.4.1 1 + (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node >*)@Base" 2.4.1 1 + (c++)"std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_unique >(std::pair&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.3.2 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 @@ -4299,19 +4374,23 @@ (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 1.10.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 1.10.1 1 + (c++)"std::_Rb_tree_iterator > std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_emplace_hint_unique, std::tuple<> >(std::_Rb_tree_const_iterator >, std::piecewise_construct_t const&, std::tuple&&, std::tuple<>&&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_unique_pos(long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator >, long long const&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*)@Base" 2.2.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(long long const&)@Base" 2.2.0 1 (c++)"std::pair, bool> std::_Rb_tree, std::less, std::allocator >::_M_insert_unique(long long&&)@Base" 2.2.0 1 + (c++)"std::_Rb_tree, std::less, std::allocator >::_M_get_insert_unique_pos(long long const&)@Base" 2.4.1 1 (c++)"std::_Rb_tree, std::less, std::allocator >::erase(long long const&)@Base" 2.1.0 1 (c++)"std::_Rb_tree_node* std::_Rb_tree, std::less, std::allocator >::_M_copy, std::less, std::allocator >::_Alloc_node>(std::_Rb_tree_node const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::less, std::allocator >::_Alloc_node&)@Base" 2.2.0 1 (c++)"std::_Rb_tree, std::less, std::allocator >::_M_erase(std::_Rb_tree_node*)@Base" 2.1.0 1 (c++)"std::__detail::_Hash_node, std::allocator >, true>* std::__detail::_Hashtable_alloc, std::allocator >, true> > >::_M_allocate_node, std::allocator > const&>(std::__cxx11::basic_string, std::allocator > const&)@Base" 2.3.2 1 + (c++)"std::__detail::_Map_base, std::allocator >, std::pair, std::allocator > const, int>, std::allocator, std::allocator > const, int> >, std::__detail::_Select1st, std::equal_to, std::allocator > >, std::hash, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits, true>::operator[](std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.1 1 (c++)"bool std::operator< (std::pair const&, std::pair const&)@Base" 2.3.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, char const*)@Base" 2.2.0 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.2.0 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator >&&, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.2.0 1 + (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(char const*, std::__cxx11::basic_string, std::allocator >&&)@Base" 2.4.1 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(char const*, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator > const&, char const*)@Base" 2.0.2 1 (c++)"std::__cxx11::basic_string, std::allocator > std::operator+, std::allocator >(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@Base" 2.0.2 1 @@ -4381,6 +4460,7 @@ (c++)"typeinfo for OGRLayerDecorator@Base" 2.0.2 1 (c++)"typeinfo for GDALNoDataMaskBand@Base" 1.10.1 1 (c++)"typeinfo for OGRMultiLineString@Base" 1.10.1 1 + (c++)"typeinfo for CADDictionaryRecord@Base" 2.4.1 1 (c++)"typeinfo for GDALMDReaderManager@Base" 2.0.2 1 (c++)"typeinfo for GDALProxyRasterBand@Base" 1.10.1 1 (c++)"typeinfo for IOGRGeometryVisitor@Base" 2.3.0 1 @@ -4412,6 +4492,7 @@ (c++)"typeinfo for CADArc@Base" 2.3.0 1 (c++)"typeinfo for CADRay@Base" 2.3.0 1 (c++)"typeinfo for CPLErr@Base" 2.1.0 1 + (c++)"typeinfo for VSIDIR@Base" 2.4.1 1 (c++)"typeinfo for CADFile@Base" 2.2.0 1 (c++)"typeinfo for CADLine@Base" 2.3.0 1 (c++)"typeinfo for CADText@Base" 2.3.0 1 @@ -4441,7 +4522,10 @@ (c++)"typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"typeinfo for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo name for CADEllipse@Base" 2.3.0 1 (c++)"typeinfo name for CADPoint3D@Base" 2.3.0 1 @@ -4509,6 +4593,7 @@ (c++)"typeinfo name for OGRLayerDecorator@Base" 2.0.2 1 (c++)"typeinfo name for GDALNoDataMaskBand@Base" 1.10.1 1 (c++)"typeinfo name for OGRMultiLineString@Base" 1.10.1 1 + (c++)"typeinfo name for CADDictionaryRecord@Base" 2.4.1 1 (c++)"typeinfo name for GDALMDReaderManager@Base" 2.0.2 1 (c++)"typeinfo name for GDALProxyRasterBand@Base" 1.10.1 1 (c++)"typeinfo name for IOGRGeometryVisitor@Base" 2.3.0 1 @@ -4540,6 +4625,7 @@ (c++)"typeinfo name for CADArc@Base" 2.3.0 1 (c++)"typeinfo name for CADRay@Base" 2.3.0 1 (c++)"typeinfo name for CPLErr@Base" 2.1.0 1 + (c++)"typeinfo name for VSIDIR@Base" 2.4.1 1 (c++)"typeinfo name for CADFile@Base" 2.2.0 1 (c++)"typeinfo name for CADLine@Base" 2.3.0 1 (c++)"typeinfo name for CADText@Base" 2.3.0 1 @@ -4569,8 +4655,12 @@ (c++)"typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"typeinfo name for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"typeinfo name for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@Base" 2.2.0 1 + (c++)"typeinfo name for std::_Sp_make_shared_tag@Base" 2.4.1 1 (c++)"vtable for CADEllipse@Base" 2.3.0 1 (c++)"vtable for CADPoint3D@Base" 2.3.0 1 (c++)"vtable for CADXRecord@Base" 2.2.0 1 @@ -4637,6 +4727,7 @@ (c++)"vtable for OGRLayerDecorator@Base" 2.0.2 1 (c++)"vtable for GDALNoDataMaskBand@Base" 1.10.1 1 (c++)"vtable for OGRMultiLineString@Base" 1.10.1 1 + (c++)"vtable for CADDictionaryRecord@Base" 2.4.1 1 (c++)"vtable for GDALMDReaderManager@Base" 2.0.2 1 (c++)"vtable for GDALProxyRasterBand@Base" 1.10.1 1 (c++)"vtable for OGRSpatialReference@Base" 1.10.1 1 @@ -4648,6 +4739,7 @@ (c++)"vtable for OGRPolyhedralSurface@Base" 2.2.0 1 (c++)"vtable for VRTDerivedRasterBand@Base" 1.10.1 1 (c++)"vtable for VRTSourcedRasterBand@Base" 1.10.1 1 + (c++)"vtable for VSIFilesystemHandler@Base" 2.4.1 1 (c++)"vtable for OGRGeometryCollection@Base" 1.10.1 1 (c++)"vtable for CPLJSonStreamingParser@Base" 2.3.0 1 (c++)"vtable for GDALJP2AbstractDataset@Base" 1.11.0 1 @@ -4663,6 +4755,7 @@ (c++)"vtable for GDALDefaultRasterAttributeTable@Base" 1.11.0 1 (c++)"vtable for CADArc@Base" 2.3.0 1 (c++)"vtable for CADRay@Base" 2.3.0 1 + (c++)"vtable for VSIDIR@Base" 2.4.1 1 (c++)"vtable for CADFile@Base" 2.2.0 1 (c++)"vtable for CADLine@Base" 2.3.0 1 (c++)"vtable for CADText@Base" 2.3.0 1 @@ -4687,6 +4780,10 @@ (c++)"vtable for OGRFeature::FieldNotFoundException@Base" 2.3.0 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"vtable for std::_Sp_counted_ptr@Base" 2.4.1 1 + (c++)"vtable for std::_Sp_counted_ptr@Base" 2.4.1 1 (c++)"vtable for std::_Sp_counted_ptr@Base" 2.3.0 1 + (c++)"vtable for std::_Sp_counted_ptr, std::allocator >*, (__gnu_cxx::_Lock_policy)2>@Base" 2.4.1 1 (c++)"VRTComplexSource::RasterIOInternal(int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*, GDALDataType)::bHasWarned@Base" 2.2.3 1 (c++)"VRTComplexSource::RasterIOInternal(int, int, int, int, void*, int, int, GDALDataType, long long, long long, GDALRasterIOExtraArg*, GDALDataType)::bHasWarned@Base" 2.2.3 1 + (c++)"std::_Sp_make_shared_tag::_S_ti()::__tag@Base" 2.4.1 1 diff -Nru gdal-2.4.0+dfsg/debian/libgdal-dev.lintian-overrides gdal-2.4.2+dfsg/debian/libgdal-dev.lintian-overrides --- gdal-2.4.0+dfsg/debian/libgdal-dev.lintian-overrides 2018-09-27 07:23:58.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal-dev.lintian-overrides 2019-07-07 12:07:12.000000000 +0000 @@ -1,9 +1,9 @@ # Man pages are automatically generated with sphinx. -libgdal-dev: hyphen-used-as-minus-sign +hyphen-used-as-minus-sign # False positive on: "(319) 369-3131" -libgdal-dev: copyright-year-in-future 3131 * +copyright-year-in-future 3131 * # GDAL doesn't use Multi-Arch, it breaks too many rdeps -libgdal-dev: pkg-config-unavailable-for-cross-compilation usr/lib/pkgconfig/gdal.pc +pkg-config-unavailable-for-cross-compilation usr/lib/pkgconfig/gdal.pc diff -Nru gdal-2.4.0+dfsg/debian/libgdal-doc.lintian-overrides gdal-2.4.2+dfsg/debian/libgdal-doc.lintian-overrides --- gdal-2.4.0+dfsg/debian/libgdal-doc.lintian-overrides 2018-09-27 07:23:58.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal-doc.lintian-overrides 2019-07-07 12:07:12.000000000 +0000 @@ -1,3 +1,3 @@ # False positive on: "(319) 369-3131" -libgdal-doc: copyright-year-in-future 3131 * +copyright-year-in-future 3131 * diff -Nru gdal-2.4.0+dfsg/debian/libgdal-java.lintian-overrides gdal-2.4.2+dfsg/debian/libgdal-java.lintian-overrides --- gdal-2.4.0+dfsg/debian/libgdal-java.lintian-overrides 2018-09-27 07:23:58.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal-java.lintian-overrides 2019-07-07 12:07:12.000000000 +0000 @@ -1,3 +1,6 @@ # False positive on: "(319) 369-3131" -libgdal-java: copyright-year-in-future 3131 * +copyright-year-in-future 3131 * + +# Cannot easily be fixed +file-references-package-build-path * diff -Nru gdal-2.4.0+dfsg/debian/libgdal-perl.lintian-overrides gdal-2.4.2+dfsg/debian/libgdal-perl.lintian-overrides --- gdal-2.4.0+dfsg/debian/libgdal-perl.lintian-overrides 2018-09-27 07:23:58.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/libgdal-perl.lintian-overrides 2019-07-07 12:07:12.000000000 +0000 @@ -1,3 +1,6 @@ # False positive on: "(319) 369-3131" -libgdal-perl: copyright-year-in-future 3131 * +copyright-year-in-future 3131 * + +# Cannot easily be fixed +file-references-package-build-path * diff -Nru gdal-2.4.0+dfsg/debian/patches/hdf4 gdal-2.4.2+dfsg/debian/patches/hdf4 --- gdal-2.4.0+dfsg/debian/patches/hdf4 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/patches/hdf4 2019-07-07 12:07:12.000000000 +0000 @@ -5,7 +5,7 @@ --- a/configure +++ b/configure -@@ -26188,7 +26188,7 @@ fi +@@ -26228,7 +26228,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mfhdf_SDreaddata" >&5 $as_echo "$ac_cv_lib_mfhdf_SDreaddata" >&6; } if test "x$ac_cv_lib_mfhdf_SDreaddata" = xyes; then : @@ -14,7 +14,7 @@ else HDF_LIB_NAME=missing fi -@@ -26248,7 +26248,7 @@ if ${ac_cv_lib_mfhdf_SDreaddata+:} false +@@ -26288,7 +26288,7 @@ if ${ac_cv_lib_mfhdf_SDreaddata+:} false $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -23,7 +23,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -@@ -26279,7 +26279,7 @@ fi +@@ -26319,7 +26319,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mfhdf_SDreaddata" >&5 $as_echo "$ac_cv_lib_mfhdf_SDreaddata" >&6; } if test "x$ac_cv_lib_mfhdf_SDreaddata" = xyes; then : @@ -32,7 +32,7 @@ else HDF_LIB_NAME=missing fi -@@ -26294,7 +26294,7 @@ if ${ac_cv_lib_mfhdf_SDreaddata+:} false +@@ -26334,7 +26334,7 @@ if ${ac_cv_lib_mfhdf_SDreaddata+:} false $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -41,7 +41,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -@@ -26325,7 +26325,7 @@ fi +@@ -26365,7 +26365,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mfhdf_SDreaddata" >&5 $as_echo "$ac_cv_lib_mfhdf_SDreaddata" >&6; } if test "x$ac_cv_lib_mfhdf_SDreaddata" = xyes; then : diff -Nru gdal-2.4.0+dfsg/debian/patches/spatialite gdal-2.4.2+dfsg/debian/patches/spatialite --- gdal-2.4.0+dfsg/debian/patches/spatialite 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/patches/spatialite 2019-07-07 12:07:12.000000000 +0000 @@ -5,7 +5,7 @@ --- a/configure +++ b/configure -@@ -31429,7 +31429,7 @@ if ${ac_cv_lib_spatialite_spatialite_ini +@@ -31470,7 +31470,7 @@ if ${ac_cv_lib_spatialite_spatialite_ini $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -14,7 +14,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -@@ -31493,7 +31493,7 @@ if ${ac_cv_lib_spatialite_spatialite_ini +@@ -31534,7 +31534,7 @@ if ${ac_cv_lib_spatialite_spatialite_ini $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS @@ -23,7 +23,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -@@ -31883,7 +31883,7 @@ if ${ac_cv_lib_spatialite_spatialite_tar +@@ -31924,7 +31924,7 @@ if ${ac_cv_lib_spatialite_spatialite_tar $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS diff -Nru gdal-2.4.0+dfsg/debian/python3-gdal.lintian-overrides gdal-2.4.2+dfsg/debian/python3-gdal.lintian-overrides --- gdal-2.4.0+dfsg/debian/python3-gdal.lintian-overrides 2018-09-27 07:23:58.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/python3-gdal.lintian-overrides 2019-07-07 12:07:12.000000000 +0000 @@ -1,3 +1,3 @@ # False positive on: "(319) 369-3131" -python3-gdal: copyright-year-in-future 3131 * +copyright-year-in-future 3131 * diff -Nru gdal-2.4.0+dfsg/debian/python-gdal.lintian-overrides gdal-2.4.2+dfsg/debian/python-gdal.lintian-overrides --- gdal-2.4.0+dfsg/debian/python-gdal.lintian-overrides 2018-09-27 07:23:58.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/python-gdal.lintian-overrides 2019-07-07 12:07:12.000000000 +0000 @@ -1,10 +1,10 @@ # Man pages are automatically generated with sphinx. -python-gdal: hyphen-used-as-minus-sign -python-gdal: binary-without-manpage +hyphen-used-as-minus-sign +binary-without-manpage # QGIS plugins rely on .py extension, see: http://hub.qgis.org/issues/9924 -python-gdal: script-with-language-extension usr/bin/*.py +script-with-language-extension usr/bin/*.py # False positive on: "(319) 369-3131" -python-gdal: copyright-year-in-future 3131 * +copyright-year-in-future 3131 * diff -Nru gdal-2.4.0+dfsg/debian/rules gdal-2.4.2+dfsg/debian/rules --- gdal-2.4.0+dfsg/debian/rules 2019-01-02 11:57:23.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/rules 2019-07-07 12:07:12.000000000 +0000 @@ -11,6 +11,9 @@ # Enable hardening build flags export DEB_BUILD_MAINT_OPTIONS=hardening=+all +# Workaround for proj_api.h deprecation in PROJ 6.0.0 +export DEB_CFLAGS_MAINT_APPEND=-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H + # Disable PIE on Ubuntu where it's still problematic VENDOR_DERIVES_FROM_UBUNTU ?= $(shell dpkg-vendor --derives-from Ubuntu && echo yes) DISTRIBUTION_RELEASE := $(shell lsb_release -cs) diff -Nru gdal-2.4.0+dfsg/debian/watch gdal-2.4.2+dfsg/debian/watch --- gdal-2.4.0+dfsg/debian/watch 2018-12-21 19:14:09.000000000 +0000 +++ gdal-2.4.2+dfsg/debian/watch 2019-07-07 12:10:31.000000000 +0000 @@ -3,5 +3,5 @@ dversionmangle=s/\+(debian|dfsg|ds|deb)\d*$//,\ uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\d*)$/$1~$2/;s/RC/rc/,\ repacksuffix=+dfsg \ -https://trac.osgeo.org/gdal/wiki/DownloadSource \ +https://download.osgeo.org/gdal/(\d+\.\d+\.\d+)/ \ (?:|.*/)gdal(?:[_\-]v?|)(\d\S*)\.(?:tar\.xz|txz|tar\.bz2|tbz2|tar\.gz|tgz) diff -Nru gdal-2.4.0+dfsg/frmts/aigrid/aigopen.c gdal-2.4.2+dfsg/frmts/aigrid/aigopen.c --- gdal-2.4.0+dfsg/frmts/aigrid/aigopen.c 2018-12-14 21:35:23.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/aigrid/aigopen.c 2019-06-28 11:14:05.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: aigopen.c 202f8010aba43611725e3e6ba2ddb5971bc9fdb0 2018-02-25 22:13:32Z Even Rouault $ + * $Id: aigopen.c 18e9a1cc668ec0fd308b4e681ef4da2f00d1de44 2019-03-23 23:54:29 +0100 Even Rouault $ * * Project: Arc/Info Binary Grid Translator * Purpose: Grid file access cover API for non-GDAL use. @@ -30,7 +30,7 @@ #include "aigrid.h" -CPL_CVSID("$Id: aigopen.c 202f8010aba43611725e3e6ba2ddb5971bc9fdb0 2018-02-25 22:13:32Z Even Rouault $") +CPL_CVSID("$Id: aigopen.c 18e9a1cc668ec0fd308b4e681ef4da2f00d1de44 2019-03-23 23:54:29 +0100 Even Rouault $") CPL_INLINE static void CPL_IGNORE_RET_VAL_INT(CPL_UNUSED int unused) {} @@ -194,7 +194,7 @@ CPLErr AIGAccessTile( AIGInfo_t *psInfo, int iTileX, int iTileY ) { - char szBasename[20]; + char szBasename[32]; char *pszFilename; AIGTileInfo *psTInfo; const size_t nFilenameLen = strlen(psInfo->pszCoverName)+40; diff -Nru gdal-2.4.0+dfsg/frmts/cosar/cosar_dataset.cpp gdal-2.4.2+dfsg/frmts/cosar/cosar_dataset.cpp --- gdal-2.4.0+dfsg/frmts/cosar/cosar_dataset.cpp 2018-12-14 21:35:26.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/cosar/cosar_dataset.cpp 2019-06-28 11:12:34.000000000 +0000 @@ -29,7 +29,7 @@ #include -CPL_CVSID("$Id: cosar_dataset.cpp 6f51856470aecacbcb25254e6a6e263e5b1a5aae 2017-12-19 05:31:03Z Kurt Schwehr $") +CPL_CVSID("$Id: cosar_dataset.cpp 7204630312a8b8b944440f797a7a83ff35705682 2019-01-02 16:40:56 +0100 Even Rouault $") /* Various offsets, in bytes */ // Commented out the unused defines. @@ -103,9 +103,9 @@ nRSLV = CPL_SWAP32(nRSLV); #endif - if (nRSLV < nRSFV || nRSFV == 0 + if (nRSLV < nRSFV || nRSFV == 0 || nRSLV == 0 || nRSFV - 1 >= ((unsigned long) nBlockXSize) - || nRSLV - nRSFV > ((unsigned long) nBlockXSize) + || nRSLV - 1 >= ((unsigned long) nBlockXSize) || nRSFV >= this->nRTNB || nRSLV > this->nRTNB) { /* throw an error */ diff -Nru gdal-2.4.0+dfsg/frmts/dted/dted_api.c gdal-2.4.2+dfsg/frmts/dted/dted_api.c --- gdal-2.4.0+dfsg/frmts/dted/dted_api.c 2018-12-14 21:35:27.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/dted/dted_api.c 2019-06-28 11:12:34.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: dted_api.c 3b0bbf7a8a012d69a783ee1f9cfeb5c52b370021 2017-06-27 20:57:02Z Even Rouault $ + * $Id: dted_api.c 18e9a1cc668ec0fd308b4e681ef4da2f00d1de44 2019-03-23 23:54:29 +0100 Even Rouault $ * * Project: DTED Translator * Purpose: Implementation of DTED/CDED access functions. @@ -31,7 +31,7 @@ #include "dted_api.h" #ifndef AVOID_CPL -CPL_CVSID("$Id: dted_api.c 3b0bbf7a8a012d69a783ee1f9cfeb5c52b370021 2017-06-27 20:57:02Z Even Rouault $") +CPL_CVSID("$Id: dted_api.c 18e9a1cc668ec0fd308b4e681ef4da2f00d1de44 2019-03-23 23:54:29 +0100 Even Rouault $") #endif static int bWarnedTwoComplement = FALSE; @@ -1021,6 +1021,7 @@ { int nFieldLen; char *pszFieldSrc; + size_t nLenToCopy; if( !psDInfo->bUpdate ) return FALSE; @@ -1035,10 +1036,10 @@ /* -------------------------------------------------------------------- */ /* Update it, padding with spaces. */ /* -------------------------------------------------------------------- */ - memset( pszFieldSrc, ' ', nFieldLen ); - /* cppcheck-suppress redundantCopy */ - strncpy( pszFieldSrc, pszNewValue, - MIN((size_t)nFieldLen,strlen(pszNewValue)) ); + nLenToCopy = MIN((size_t)nFieldLen,strlen(pszNewValue)); + memcpy( pszFieldSrc, pszNewValue, nLenToCopy); + if( nLenToCopy < (size_t)nFieldLen ) + memset( pszFieldSrc + nLenToCopy, ' ', nFieldLen - nLenToCopy ); /* Turn the flag on, so that the headers are rewritten at file */ /* closing */ diff -Nru gdal-2.4.0+dfsg/frmts/eeda/drv_eeda.html gdal-2.4.2+dfsg/frmts/eeda/drv_eeda.html --- gdal-2.4.0+dfsg/frmts/eeda/drv_eeda.html 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/eeda/drv_eeda.html 2019-06-28 11:09:58.000000000 +0000 @@ -89,7 +89,8 @@ idStringImage ID; equivalent to name without the "projects/*/assets/" prefix (e.g. users/USER/ASSET)No pathString(Deprecated) Image path; equivalent to idNo gdal_datasetStringGDAL dataset name (e.g. EEDAI:projects/earthengine-public/assets/COPERNICUS/S2/20170430T190351_20170430T190351_T10SEG)
    hat can be opened with the Google Earth Engine Data API Image driverNo -timeDateTimeAcquisition dateYes +startTimeDateTimeAcquisition start dateYes (restricted to >= comparison on top level) +endTimeDateTimeAcquisition end dateYes (restricted to <= comparison on top level) updateTimeDateTimeUpdate dateNo sizeBytesInteger64File size in bytesNo band_countIntegerNumber of bandsNo @@ -154,7 +155,7 @@
  • Listing all images available matching criteria :
    -ogrinfo -ro -al "EEDA:projects/earthengine-public/assets/COPERNICUS/S2" -where "time >= '2015/03/26 00:00:00' AND CLOUDY_PIXEL_PERCENTAGE < 10" --config EEDA_CLIENT_EMAIL "my@email" --config EEDA_PRIVATE_KEY_FILE my.pem
    +ogrinfo -ro -al "EEDA:projects/earthengine-public/assets/COPERNICUS/S2" -where "startTime >= '2015/03/26 00:00:00' AND endTime <= '2015/06/30 00:00:00' AND CLOUDY_PIXEL_PERCENTAGE < 10" --config EEDA_CLIENT_EMAIL "my@email" --config EEDA_PRIVATE_KEY_FILE my.pem
     

    diff -Nru gdal-2.4.0+dfsg/frmts/eeda/eedacommon.cpp gdal-2.4.2+dfsg/frmts/eeda/eedacommon.cpp --- gdal-2.4.0+dfsg/frmts/eeda/eedacommon.cpp 2018-12-14 21:35:29.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/eeda/eedacommon.cpp 2019-06-28 11:14:05.000000000 +0000 @@ -65,7 +65,7 @@ continue; GDALDataType eDT = GDT_Byte; bool bSignedByte = false; - if( EQUAL(pszPrecision, "INTEGER") ) + if( EQUAL(pszPrecision, "INT") ) { json_object* poRange = CPL_json_object_object_get(poDataType, "range"); @@ -108,11 +108,11 @@ } } } - else if( EQUAL(pszPrecision, "FLOAT32") ) + else if( EQUAL(pszPrecision, "FLOAT") ) { eDT = GDT_Float32; } - else if( EQUAL(pszPrecision, "FLOAT64") ) + else if( EQUAL(pszPrecision, "DOUBLE") ) { eDT = GDT_Float64; } diff -Nru gdal-2.4.0+dfsg/frmts/eeda/eedadataset.cpp gdal-2.4.2+dfsg/frmts/eeda/eedadataset.cpp --- gdal-2.4.0+dfsg/frmts/eeda/eedadataset.cpp 2018-12-14 21:35:29.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/eeda/eedadataset.cpp 2019-06-28 11:14:05.000000000 +0000 @@ -200,19 +200,19 @@ m_poFeatureDefn->AddFieldDefn(&oFieldDefn); } { - OGRFieldDefn oFieldDefn("path", OFTString); + OGRFieldDefn oFieldDefn("gdal_dataset", OFTString); m_poFeatureDefn->AddFieldDefn(&oFieldDefn); } { - OGRFieldDefn oFieldDefn("gdal_dataset", OFTString); + OGRFieldDefn oFieldDefn("updateTime", OFTDateTime); m_poFeatureDefn->AddFieldDefn(&oFieldDefn); } { - OGRFieldDefn oFieldDefn("time", OFTDateTime); + OGRFieldDefn oFieldDefn("startTime", OFTDateTime); m_poFeatureDefn->AddFieldDefn(&oFieldDefn); } { - OGRFieldDefn oFieldDefn("updateTime", OFTDateTime); + OGRFieldDefn oFieldDefn("endTime", OFTDateTime); m_poFeatureDefn->AddFieldDefn(&oFieldDefn); } { @@ -442,7 +442,7 @@ return nullptr; m_poCurPageAssets = CPL_json_object_object_get( - m_poCurPageObj, "assets"); + m_poCurPageObj, "images"); } if( m_poCurPageAssets == nullptr || @@ -503,15 +503,8 @@ poFeature->SetField("id", pszId); } - const char* pszPath = - json_object_get_string(CPL_json_object_object_get(poAsset, "path")); - if ( pszPath ) - { - poFeature->SetField("path", pszId); - } - const char* const apszBaseProps[] = - { "time", "updateTime", "sizeBytes" }; + { "updateTime", "startTime", "endTime", "sizeBytes" }; for( size_t i = 0; i < CPL_ARRAYSIZE(apszBaseProps); i++ ) { const char* pszVal = json_object_get_string( @@ -800,55 +793,61 @@ else if( bIsAndTopLevel && poNode->eNodeType == SNT_OPERATION && (poNode->nOperation == SWQ_EQ || - poNode->nOperation == SWQ_GE || - poNode->nOperation == SWQ_LE) && + poNode->nOperation == SWQ_GE) && poNode->nSubExprCount == 2 && poNode->papoSubExpr[0]->eNodeType == SNT_COLUMN && poNode->papoSubExpr[1]->eNodeType == SNT_CONSTANT && poNode->papoSubExpr[0]->field_index == - m_poFeatureDefn->GetFieldIndex("time") && + m_poFeatureDefn->GetFieldIndex("startTime") && poNode->papoSubExpr[1]->field_type == SWQ_TIMESTAMP ) { - if( poNode->nOperation == SWQ_GE || poNode->nOperation == SWQ_EQ ) + int nTerms = GDALEEDALayerParseDateTime(poNode->papoSubExpr[1]->string_value, + SWQ_GE, + nYear, nMonth, nDay, nHour, nMinute, nSecond); + if( nTerms >= 3 ) { - int nTerms = GDALEEDALayerParseDateTime(poNode->papoSubExpr[1]->string_value, - SWQ_GE, - nYear, nMonth, nDay, nHour, nMinute, nSecond); - if( nTerms >= 3 ) - { - m_osStartTime = CPLSPrintf("%04d-%02d-%02dT%02d:%02d:%02dZ", - nYear, nMonth, nDay, nHour, nMinute, nSecond); - } - else - { - m_bFilterMustBeClientSideEvaluated = true; - } + m_osStartTime = CPLSPrintf("%04d-%02d-%02dT%02d:%02d:%02dZ", + nYear, nMonth, nDay, nHour, nMinute, nSecond); } - if( poNode->nOperation == SWQ_LE || poNode->nOperation == SWQ_EQ ) + else { - int nTerms = GDALEEDALayerParseDateTime(poNode->papoSubExpr[1]->string_value, - SWQ_LE, - nYear, nMonth, nDay, nHour, nMinute, nSecond); - if( nTerms >= 3 ) - { - if( poNode->nOperation == SWQ_EQ && nTerms == 6 ) - { - if( nSecond < 59 ) - nSecond ++; - else if( nMinute < 59 ) - nMinute ++; - else if( nHour < 23 ) - nHour ++; - else - nDay ++; - } - m_osEndTime = CPLSPrintf("%04d-%02d-%02dT%02d:%02d:%02dZ", - nYear, nMonth, nDay, nHour, nMinute, nSecond); - } - else - { - m_bFilterMustBeClientSideEvaluated = true; + m_bFilterMustBeClientSideEvaluated = true; + } + return ""; + } + else if( bIsAndTopLevel && + poNode->eNodeType == SNT_OPERATION && + (poNode->nOperation == SWQ_EQ || + poNode->nOperation == SWQ_LE) && + poNode->nSubExprCount == 2 && + poNode->papoSubExpr[0]->eNodeType == SNT_COLUMN && + poNode->papoSubExpr[1]->eNodeType == SNT_CONSTANT && + poNode->papoSubExpr[0]->field_index == + m_poFeatureDefn->GetFieldIndex("endTime") && + poNode->papoSubExpr[1]->field_type == SWQ_TIMESTAMP ) + { + int nTerms = GDALEEDALayerParseDateTime(poNode->papoSubExpr[1]->string_value, + SWQ_LE, + nYear, nMonth, nDay, nHour, nMinute, nSecond); + if( nTerms >= 3 ) + { + if( poNode->nOperation == SWQ_EQ && nTerms == 6 ) + { + if( nSecond < 59 ) + nSecond ++; + else if( nMinute < 59 ) + nMinute ++; + else if( nHour < 23 ) + nHour ++; + else + nDay ++; } + m_osEndTime = CPLSPrintf("%04d-%02d-%02dT%02d:%02d:%02dZ", + nYear, nMonth, nDay, nHour, nMinute, nSecond); + } + else + { + m_bFilterMustBeClientSideEvaluated = true; } return ""; } @@ -1120,7 +1119,7 @@ bool GDALEEDADataset::Open(GDALOpenInfo* poOpenInfo) { m_osBaseURL = CPLGetConfigOption("EEDA_URL", - "https://earthengine.googleapis.com/v1/"); + "https://earthengine.googleapis.com/v1alpha/"); CPLString osCollection = CSLFetchNameValueDef(poOpenInfo->papszOpenOptions, "COLLECTION", ""); @@ -1163,7 +1162,7 @@ if( poRootAsset == nullptr ) return false; - json_object* poAssets = CPL_json_object_object_get(poRootAsset, "assets"); + json_object* poAssets = CPL_json_object_object_get(poRootAsset, "images"); if( poAssets == nullptr || json_object_get_type(poAssets) != json_type_array || json_object_array_length(poAssets) != 1 ) diff -Nru gdal-2.4.0+dfsg/frmts/eeda/eedaidataset.cpp gdal-2.4.2+dfsg/frmts/eeda/eedaidataset.cpp --- gdal-2.4.0+dfsg/frmts/eeda/eedaidataset.cpp 2018-12-14 21:35:29.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/eeda/eedaidataset.cpp 2019-06-28 11:14:05.000000000 +0000 @@ -1188,7 +1188,7 @@ if( EQUAL(m_osPixelEncoding, "PNG") || EQUAL(m_osPixelEncoding, "JPEG") || - EQUAL(m_osPixelEncoding, "AUTO_PNG_JPEG") ) + EQUAL(m_osPixelEncoding, "AUTO_JPEG_PNG") ) { if( nBands != 1 && nBands != 3 ) { @@ -1250,7 +1250,7 @@ bool GDALEEDAIDataset::Open(GDALOpenInfo* poOpenInfo) { m_osBaseURL = CPLGetConfigOption("EEDA_URL", - "https://earthengine.googleapis.com/v1/"); + "https://earthengine.googleapis.com/v1alpha/"); m_osAsset = CSLFetchNameValueDef(poOpenInfo->papszOpenOptions, "ASSET", ""); @@ -1655,7 +1655,7 @@ " PNG" " JPEG" " GEO_TIFF" -" AUTO_PNG_JPEG" +" AUTO_JPEG_PNG" " NPY" " " "

  • BANDS=bandname1[,bandnameX]*: Comma separated list of band names.
  • -
  • PIXEL_ENCODING=AUTO/PNG/JPEG/AUTO_PNG_JPEG/GEO_TIFF/NPY: Format in which to +
  • PIXEL_ENCODING=AUTO/PNG/JPEG/AUTO_JPEG_PNG/GEO_TIFF/NPY: Format in which to request pixels.
  • BLOCK_SIZE=integer: Size of a GDAL block, which is the minimum unit to query pixels. Default is 256.
  • @@ -95,7 +95,7 @@ By default (PIXEL_ENCODING=AUTO), the driver will request pixels in a format compatible of the number and data types of the bands. The PNG, JPEG and -AUTO_PNG_JPEG can only be used with bands of type Byte. +AUTO_JPEG_PNG can only be used with bands of type Byte.

    Examples

    diff -Nru gdal-2.4.0+dfsg/frmts/envisat/EnvisatFile.c gdal-2.4.2+dfsg/frmts/envisat/EnvisatFile.c --- gdal-2.4.0+dfsg/frmts/envisat/EnvisatFile.c 2018-12-14 21:35:29.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/envisat/EnvisatFile.c 2019-06-28 11:12:35.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: EnvisatFile.c 3b0bbf7a8a012d69a783ee1f9cfeb5c52b370021 2017-06-27 20:57:02Z Even Rouault $ + * $Id: EnvisatFile.c 18e9a1cc668ec0fd308b4e681ef4da2f00d1de44 2019-03-23 23:54:29 +0100 Even Rouault $ * * Project: APP ENVISAT Support * Purpose: Low Level Envisat file access (read/write) API. @@ -35,7 +35,7 @@ # include "cpl_conv.h" # include "EnvisatFile.h" -CPL_CVSID("$Id: EnvisatFile.c 3b0bbf7a8a012d69a783ee1f9cfeb5c52b370021 2017-06-27 20:57:02Z Even Rouault $") +CPL_CVSID("$Id: EnvisatFile.c 18e9a1cc668ec0fd308b4e681ef4da2f00d1de44 2019-03-23 23:54:29 +0100 Even Rouault $") #else # include "APP/app.h" @@ -913,6 +913,8 @@ { int entry_count, key_index; EnvisatNameValue **entries; + size_t nValueLen; + size_t nEntryValueLen; if( !self->updatable ) { @@ -951,16 +953,16 @@ } self->header_dirty = 1; - if( strlen(value) > strlen(entries[key_index]->value) ) + nValueLen = strlen(value); + nEntryValueLen = strlen(entries[key_index]->value); + if( nValueLen >= nEntryValueLen ) { - strncpy( entries[key_index]->value, value, - strlen(entries[key_index]->value) ); + memcpy( entries[key_index]->value, value, nEntryValueLen ); } else { - memset( entries[key_index]->value, ' ', - strlen(entries[key_index]->value) ); - strncpy( entries[key_index]->value, value, strlen(value) ); + memcpy( entries[key_index]->value, value, nValueLen ); + memset( entries[key_index]->value + nValueLen, ' ', nEntryValueLen - nValueLen ); } return SUCCESS; diff -Nru gdal-2.4.0+dfsg/frmts/gdalallregister.cpp gdal-2.4.2+dfsg/frmts/gdalallregister.cpp --- gdal-2.4.0+dfsg/frmts/gdalallregister.cpp 2018-12-14 21:35:31.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/gdalallregister.cpp 2019-06-28 11:12:37.000000000 +0000 @@ -35,7 +35,7 @@ #include "gnm_frmts.h" #endif -CPL_CVSID("$Id: gdalallregister.cpp 25c199ba2b40bdcbdb3d7aafe52f94af676d8aab 2018-10-18 09:09:03 +0200 Even Rouault $") +CPL_CVSID("$Id: gdalallregister.cpp e3337a0563ae8a64f47cd9fec038ce9c2cc18ebf 2019-04-24 23:15:43 +0200 Even Rouault $") #ifdef notdef // we may have a use for this some day @@ -507,6 +507,12 @@ GDALRegister_SAGA(); #endif +#ifdef FRMT_ignfheightasciigrid + // IGNFHeightASCIIGrid must come before XYZ, otherwise XYZ might + // try and fail opening such files + GDALRegister_IGNFHeightASCIIGrid(); +#endif + #ifdef FRMT_xyz GDALRegister_XYZ(); #endif @@ -564,10 +570,6 @@ GDALRegister_SIGDEM(); #endif -#ifdef FRMT_ignfheightasciigrid - GDALRegister_IGNFHeightASCIIGrid(); -#endif - // NOTE: you need to generally your own driver before that line. /* -------------------------------------------------------------------- */ diff -Nru gdal-2.4.0+dfsg/frmts/grib/degrib/degrib/degrib1.cpp gdal-2.4.2+dfsg/frmts/grib/degrib/degrib/degrib1.cpp --- gdal-2.4.0+dfsg/frmts/grib/degrib/degrib/degrib1.cpp 2018-12-14 21:35:34.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/grib/degrib/degrib/degrib1.cpp 2019-06-28 11:12:34.000000000 +0000 @@ -169,6 +169,7 @@ if ((subcenter != 0) || ((process != 80) && (process != 180))) { return &parm_table_ncep_opn[0]; } +#if 0 /* At this point could be either the opn or reanalysis table */ switch (DEF_NCEP_TABLE) { case opn_nowarn: @@ -177,6 +178,10 @@ return &parm_table_ncep_reanal[0]; } break; +#else + // ERO: this is the non convoluted version of the above code + return &parm_table_ncep_reanal[0]; +#endif case 3: return &parm_table_ncep_opn[0]; case 128: diff -Nru gdal-2.4.0+dfsg/frmts/grib/degrib/degrib/myerror.c gdal-2.4.2+dfsg/frmts/grib/degrib/degrib/myerror.c --- gdal-2.4.0+dfsg/frmts/grib/degrib/degrib/myerror.c 2018-12-14 21:35:36.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/grib/degrib/degrib/myerror.c 2019-06-28 11:12:33.000000000 +0000 @@ -185,7 +185,7 @@ slen = strlen (bufpart); lenBuff += slen; buffer = (char *) realloc ((void *) buffer, lenBuff); - strncpy (buffer + ipos, bufpart, slen); + memcpy (buffer + ipos, bufpart, slen); ipos = lenBuff - 1; break; case 'f': @@ -193,7 +193,7 @@ slen = strlen (bufpart); lenBuff += slen; buffer = (char *) realloc ((void *) buffer, lenBuff); - strncpy (buffer + ipos, bufpart, slen); + memcpy (buffer + ipos, bufpart, slen); ipos = lenBuff - 1; break; case 'e': @@ -201,7 +201,7 @@ slen = strlen (bufpart); lenBuff += slen; buffer = (char *) realloc ((void *) buffer, lenBuff); - strncpy (buffer + ipos, bufpart, slen); + memcpy (buffer + ipos, bufpart, slen); ipos = lenBuff - 1; break; case 'g': @@ -209,7 +209,7 @@ slen = strlen (bufpart); lenBuff += slen; buffer = (char *) realloc ((void *) buffer, lenBuff); - strncpy (buffer + ipos, bufpart, slen); + memcpy (buffer + ipos, bufpart, slen); ipos = lenBuff - 1; break; case 'c': @@ -227,7 +227,7 @@ slen = strlen (sval); lenBuff += slen; buffer = (char *) realloc ((void *) buffer, lenBuff); - strncpy (buffer + ipos, sval, slen); + memcpy (buffer + ipos, sval, slen); ipos = lenBuff - 1; break; } diff -Nru gdal-2.4.0+dfsg/frmts/gtiff/geotiff.cpp gdal-2.4.2+dfsg/frmts/gtiff/geotiff.cpp --- gdal-2.4.0+dfsg/frmts/gtiff/geotiff.cpp 2018-12-14 21:35:42.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/gtiff/geotiff.cpp 2019-06-28 11:13:02.000000000 +0000 @@ -105,7 +105,7 @@ #include "xtiffio.h" -CPL_CVSID("$Id: geotiff.cpp 6b5bc8879996c446736147f8e7968693f05e9cf3 2018-12-09 14:31:55 +0100 Even Rouault $") +CPL_CVSID("$Id: geotiff.cpp 32371deeb5cf8dee2e7e4abfb8303299ebf85968 2019-06-18 17:02:14 +0200 Even Rouault $") static bool bGlobalInExternalOvr = false; static std::mutex gMutexThreadPool; @@ -325,6 +325,7 @@ bool bCrystalized; void Crystalize(); // TODO: Spelling. + void RestoreVolatileParameters(TIFF* l_hTIFF); GDALColorTable *poColorTable; @@ -8626,32 +8627,15 @@ TIFFSetField(hTIFFTmp, TIFFTAG_COMPRESSION, poDS->nCompression); if( psJob->nPredictor != PREDICTOR_NONE ) TIFFSetField(hTIFFTmp, TIFFTAG_PREDICTOR, psJob->nPredictor); - if( poDS->nZLevel >= 0 && (poDS->nCompression == COMPRESSION_ADOBE_DEFLATE || - poDS->nCompression == COMPRESSION_LERC) ) - TIFFSetField(hTIFFTmp, TIFFTAG_ZIPQUALITY, poDS->nZLevel); - if( poDS->nLZMAPreset > 0 && poDS->nCompression == COMPRESSION_LZMA) - TIFFSetField(hTIFFTmp, TIFFTAG_LZMAPRESET, poDS->nLZMAPreset); - if( poDS->nZSTDLevel > 0 && (poDS->nCompression == COMPRESSION_ZSTD || - poDS->nCompression == COMPRESSION_LERC) ) - TIFFSetField(hTIFFTmp, TIFFTAG_ZSTD_LEVEL, poDS->nZSTDLevel); -#if HAVE_LERC - if( poDS->nCompression == COMPRESSION_LERC ) - { - TIFFSetField(hTIFFTmp, TIFFTAG_LERC_MAXZERROR, poDS->dfMaxZError); - TIFFSetField(hTIFFTmp, TIFFTAG_LERC_PARAMETERS, 2, - poDS->anLercAddCompressionAndVersion); - } -#endif - if( poDS->nWebPLevel > 0 && poDS->nCompression == COMPRESSION_WEBP) - TIFFSetField(hTIFFTmp, TIFFTAG_WEBP_LEVEL, poDS->nWebPLevel); - if( poDS->bWebPLossless && poDS->nCompression == COMPRESSION_WEBP) - TIFFSetField(hTIFFTmp, TIFFTAG_WEBP_LOSSLESS, 1); + TIFFSetField(hTIFFTmp, TIFFTAG_PHOTOMETRIC, poDS->nPhotometric); TIFFSetField(hTIFFTmp, TIFFTAG_SAMPLEFORMAT, poDS->nSampleFormat); TIFFSetField(hTIFFTmp, TIFFTAG_SAMPLESPERPIXEL, poDS->nSamplesPerPixel); TIFFSetField(hTIFFTmp, TIFFTAG_ROWSPERSTRIP, poDS->nBlockYSize); TIFFSetField(hTIFFTmp, TIFFTAG_PLANARCONFIG, poDS->nPlanarConfig); + poDS->RestoreVolatileParameters(hTIFFTmp); + bool bOK = TIFFWriteEncodedStrip(hTIFFTmp, 0, psJob->pabyBuffer, psJob->nBufferSize) == psJob->nBufferSize; @@ -9241,17 +9225,6 @@ TIFFWriteCheck( hTIFF, TIFFIsTiled(hTIFF), "GTiffDataset::Crystalize"); - // Keep zip and tiff quality, and jpegcolormode which get reset when - // we call TIFFWriteDirectory. - int jquality = -1; - TIFFGetField(hTIFF, TIFFTAG_JPEGQUALITY, &jquality); - int zquality = -1; - TIFFGetField(hTIFF, TIFFTAG_ZIPQUALITY, &zquality); - int nColorMode = -1; - TIFFGetField( hTIFF, TIFFTAG_JPEGCOLORMODE, &nColorMode ); - int nJpegTablesModeIn = -1; - TIFFGetField( hTIFF, TIFFTAG_JPEGTABLESMODE, &nJpegTablesModeIn ); - TIFFWriteDirectory( hTIFF ); if( bStreamingOut ) { @@ -9293,15 +9266,7 @@ TIFFSetDirectory( hTIFF, 0 ); } - // Now, reset zip and tiff quality and jpegcolormode. - if( jquality > 0 ) - TIFFSetField(hTIFF, TIFFTAG_JPEGQUALITY, jquality); - if( zquality > 0 ) - TIFFSetField(hTIFF, TIFFTAG_ZIPQUALITY, zquality); - if( nColorMode >= 0 ) - TIFFSetField(hTIFF, TIFFTAG_JPEGCOLORMODE, nColorMode); - if( nJpegTablesModeIn >= 0 ) - TIFFSetField(hTIFF, TIFFTAG_JPEGTABLESMODE, nJpegTablesModeIn); + RestoreVolatileParameters( hTIFF ); nDirOffset = TIFFCurrentDirOffset( hTIFF ); } @@ -11504,6 +11469,11 @@ } } } + else if( nPhotometric == PHOTOMETRIC_YCBCR && + poSrcDS->GetRasterCount() == 3 ) + { + // do nothing + } else { bStardardColorInterp = false; @@ -11745,6 +11715,9 @@ void GTiffDataset::PushMetadataToPam() { + if( GetPamFlags() & GPF_DISABLED ) + return; + const bool bStardardColorInterp = IsStandardColorInterpretation(this, nPhotometric, papszCreationOptions); @@ -12012,17 +11985,23 @@ if( !nSetDirResult ) return false; + RestoreVolatileParameters( hTIFF ); + + return true; +} + +/************************************************************************/ +/* RestoreVolatileParameters() */ +/************************************************************************/ + +void GTiffDataset::RestoreVolatileParameters(TIFF* l_hTIFF) +{ + /* -------------------------------------------------------------------- */ /* YCbCr JPEG compressed images should be translated on the fly */ /* to RGB by libtiff/libjpeg unless specifically requested */ /* otherwise. */ /* -------------------------------------------------------------------- */ - if( !TIFFGetField( hTIFF, TIFFTAG_COMPRESSION, &(nCompression) ) ) - nCompression = COMPRESSION_NONE; - - if( !TIFFGetField( hTIFF, TIFFTAG_PHOTOMETRIC, &(nPhotometric) ) ) - nPhotometric = PHOTOMETRIC_MINISBLACK; - if( nCompression == COMPRESSION_JPEG && nPhotometric == PHOTOMETRIC_YCBCR && CPLTestBool( CPLGetConfigOption("CONVERT_YCBCR_TO_RGB", @@ -12030,9 +12009,11 @@ { int nColorMode = JPEGCOLORMODE_RAW; // Initialize to 0; - TIFFGetField( hTIFF, TIFFTAG_JPEGCOLORMODE, &nColorMode ); + TIFFGetField( l_hTIFF, TIFFTAG_JPEGCOLORMODE, &nColorMode ); if( nColorMode != JPEGCOLORMODE_RGB ) - TIFFSetField(hTIFF, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB); + { + TIFFSetField(l_hTIFF, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB); + } } /* -------------------------------------------------------------------- */ @@ -12047,31 +12028,31 @@ CPLDebug( "GTiff", "Propagate JPEG_QUALITY(%d) in SetDirectory()", nJpegQuality ); #endif - TIFFSetField(hTIFF, TIFFTAG_JPEGQUALITY, nJpegQuality); + TIFFSetField(l_hTIFF, TIFFTAG_JPEGQUALITY, nJpegQuality); } if(nJpegTablesMode >= 0 && nCompression == COMPRESSION_JPEG) - TIFFSetField(hTIFF, TIFFTAG_JPEGTABLESMODE, nJpegTablesMode); + TIFFSetField(l_hTIFF, TIFFTAG_JPEGTABLESMODE, nJpegTablesMode); if(nZLevel > 0 && (nCompression == COMPRESSION_ADOBE_DEFLATE || nCompression == COMPRESSION_LERC) ) - TIFFSetField(hTIFF, TIFFTAG_ZIPQUALITY, nZLevel); + TIFFSetField(l_hTIFF, TIFFTAG_ZIPQUALITY, nZLevel); if(nLZMAPreset > 0 && nCompression == COMPRESSION_LZMA) - TIFFSetField(hTIFF, TIFFTAG_LZMAPRESET, nLZMAPreset); + TIFFSetField(l_hTIFF, TIFFTAG_LZMAPRESET, nLZMAPreset); if( nZSTDLevel > 0 && (nCompression == COMPRESSION_ZSTD || nCompression == COMPRESSION_LERC) ) - TIFFSetField(hTIFF, TIFFTAG_ZSTD_LEVEL, nZSTDLevel); + TIFFSetField(l_hTIFF, TIFFTAG_ZSTD_LEVEL, nZSTDLevel); #if HAVE_LERC if( nCompression == COMPRESSION_LERC ) { - TIFFSetField(hTIFF, TIFFTAG_LERC_MAXZERROR, dfMaxZError); + TIFFSetField(l_hTIFF, TIFFTAG_LERC_MAXZERROR, dfMaxZError); + TIFFSetField(l_hTIFF, TIFFTAG_LERC_PARAMETERS, 2, + anLercAddCompressionAndVersion); } #endif if( nWebPLevel > 0 && nCompression == COMPRESSION_WEBP) - TIFFSetField(hTIFF, TIFFTAG_WEBP_LEVEL, nWebPLevel); + TIFFSetField(l_hTIFF, TIFFTAG_WEBP_LEVEL, nWebPLevel); if( bWebPLossless && nCompression == COMPRESSION_WEBP) - TIFFSetField(hTIFF, TIFFTAG_WEBP_LOSSLESS, 1); + TIFFSetField(l_hTIFF, TIFFTAG_WEBP_LOSSLESS, 1); } - - return true; } /************************************************************************/ @@ -14615,19 +14596,23 @@ padfTiePoints[2] != 0.0 || padfTiePoints[5] != 0.0) ) { - /* modelTiePointTag = (pixel, line, z0, X, Y, Z0) */ - /* thus Z(some_point) = (z(some_point) - z0) * scaleZ + Z0 */ - /* equivalently written as */ - /* Z(some_point) = z(some_point) * scaleZ + offsetZ with */ - /* offsetZ = - z0 * scaleZ + Z0 */ - double dfScale = padfScale[2]; - double dfOffset = - -padfTiePoints[2] * dfScale + padfTiePoints[5]; - GTiffRasterBand* poBand = - cpl::down_cast(GetRasterBand(1)); - poBand->bHaveOffsetScale = true; - poBand->dfScale = dfScale; - poBand->dfOffset = dfOffset; + LookForProjection(); + if( pszProjection && HasVerticalCS(pszProjection) ) + { + /* modelTiePointTag = (pixel, line, z0, X, Y, Z0) */ + /* thus Z(some_point) = (z(some_point) - z0) * scaleZ + Z0 */ + /* equivalently written as */ + /* Z(some_point) = z(some_point) * scaleZ + offsetZ with */ + /* offsetZ = - z0 * scaleZ + Z0 */ + double dfScale = padfScale[2]; + double dfOffset = + -padfTiePoints[2] * dfScale + padfTiePoints[5]; + GTiffRasterBand* poBand = + cpl::down_cast(GetRasterBand(1)); + poBand->bHaveOffsetScale = true; + poBand->dfScale = dfScale; + poBand->dfOffset = dfOffset; + } } } } @@ -16496,6 +16481,21 @@ TIFFSetField(l_hTIFF, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB); } +#ifdef HAVE_LERC + if( poDS->nCompression == COMPRESSION_LERC ) + { + uint32 nLercParamCount = 0; + uint32* panLercParms = nullptr; + if( TIFFGetField( l_hTIFF, TIFFTAG_LERC_PARAMETERS, &nLercParamCount, + &panLercParms ) && + nLercParamCount == 2 ) + { + memcpy( poDS->anLercAddCompressionAndVersion, panLercParms, + sizeof(poDS->anLercAddCompressionAndVersion) ); + } + } +#endif + /* -------------------------------------------------------------------- */ /* Read palette back as a color table if it has one. */ /* -------------------------------------------------------------------- */ @@ -17459,7 +17459,13 @@ } } + CPLString osOldGTIFF_REPORT_COMPD_CSVal( + CPLGetConfigOption("GTIFF_REPORT_COMPD_CS", "")); + CPLSetThreadLocalConfigOption("GTIFF_REPORT_COMPD_CS", "YES"); poDS->CloneInfo( poSrcDS, nCloneInfoFlags ); + CPLSetThreadLocalConfigOption("GTIFF_REPORT_COMPD_CS", + osOldGTIFF_REPORT_COMPD_CSVal.empty() ? nullptr : + osOldGTIFF_REPORT_COMPD_CSVal.c_str()); if( !bGeoTIFF && (poDS->GetPamFlags() & GPF_DISABLED) == 0 ) { diff -Nru gdal-2.4.0+dfsg/frmts/gtiff/libtiff/tif_write.c gdal-2.4.2+dfsg/frmts/gtiff/libtiff/tif_write.c --- gdal-2.4.0+dfsg/frmts/gtiff/libtiff/tif_write.c 2018-12-14 21:35:51.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/gtiff/libtiff/tif_write.c 2019-06-28 11:13:04.000000000 +0000 @@ -176,6 +176,32 @@ return (status); } +/* Make sure that at the first attempt of rewriting a tile/strip, we will have */ +/* more bytes available in the output buffer than the previous byte count, */ +/* so that TIFFAppendToStrip() will detect the overflow when it is called the first */ +/* time if the new compressed tile is bigger than the older one. (GDAL #4771) */ +static int _TIFFReserveLargeEnoughWriteBuffer(TIFF* tif, uint32 strip_or_tile) +{ + TIFFDirectory *td = &tif->tif_dir; + if( td->td_stripbytecount[strip_or_tile] > 0 ) + { + /* The +1 is to ensure at least one extra bytes */ + /* The +4 is because the LZW encoder flushes 4 bytes before the limit */ + uint64 safe_buffer_size = (uint64)(td->td_stripbytecount[strip_or_tile] + 1 + 4); + if( tif->tif_rawdatasize <= (tmsize_t)safe_buffer_size ) + { + if( !(TIFFWriteBufferSetup(tif, NULL, + (tmsize_t)TIFFroundup_64(safe_buffer_size, 1024))) ) + return 0; + } + + /* Force TIFFAppendToStrip() to consider placing data at end + of file. */ + tif->tif_curoff = 0; + } + return 1; +} + /* * Encode the supplied data and write it to the * specified strip. @@ -222,6 +248,13 @@ tif->tif_flags |= TIFF_BUF4WRITE; tif->tif_curstrip = strip; + if( !_TIFFReserveLargeEnoughWriteBuffer(tif, strip) ) { + return ((tmsize_t)(-1)); + } + + tif->tif_rawcc = 0; + tif->tif_rawcp = tif->tif_rawdata; + if (td->td_stripsperimage == 0) { TIFFErrorExt(tif->tif_clientdata, module, "Zero strips per image"); return ((tmsize_t) -1); @@ -234,27 +267,6 @@ tif->tif_flags |= TIFF_CODERSETUP; } - if( td->td_stripbytecount[strip] > 0 ) - { - /* Make sure that at the first attempt of rewriting the tile, we will have */ - /* more bytes available in the output buffer than the previous byte count, */ - /* so that TIFFAppendToStrip() will detect the overflow when it is called the first */ - /* time if the new compressed tile is bigger than the older one. (GDAL #4771) */ - if( tif->tif_rawdatasize <= (tmsize_t)td->td_stripbytecount[strip] ) - { - if( !(TIFFWriteBufferSetup(tif, NULL, - (tmsize_t)TIFFroundup_64((uint64)(td->td_stripbytecount[strip] + 1), 1024))) ) - return ((tmsize_t)(-1)); - } - - /* Force TIFFAppendToStrip() to consider placing data at end - of file. */ - tif->tif_curoff = 0; - } - - tif->tif_rawcc = 0; - tif->tif_rawcp = tif->tif_rawdata; - tif->tif_flags &= ~TIFF_POSTENCODE; /* shortcut to avoid an extra memcpy() */ @@ -402,22 +414,8 @@ tif->tif_flags |= TIFF_BUF4WRITE; tif->tif_curtile = tile; - if( td->td_stripbytecount[tile] > 0 ) - { - /* Make sure that at the first attempt of rewriting the tile, we will have */ - /* more bytes available in the output buffer than the previous byte count, */ - /* so that TIFFAppendToStrip() will detect the overflow when it is called the first */ - /* time if the new compressed tile is bigger than the older one. (GDAL #4771) */ - if( tif->tif_rawdatasize <= (tmsize_t) td->td_stripbytecount[tile] ) - { - if( !(TIFFWriteBufferSetup(tif, NULL, - (tmsize_t)TIFFroundup_64((uint64)(td->td_stripbytecount[tile] + 1), 1024))) ) - return ((tmsize_t)(-1)); - } - - /* Force TIFFAppendToStrip() to consider placing data at end - of file. */ - tif->tif_curoff = 0; + if( !_TIFFReserveLargeEnoughWriteBuffer(tif, tile) ) { + return ((tmsize_t)(-1)); } tif->tif_rawcc = 0; diff -Nru gdal-2.4.0+dfsg/frmts/gxf/gxfdataset.cpp gdal-2.4.2+dfsg/frmts/gxf/gxfdataset.cpp --- gdal-2.4.0+dfsg/frmts/gxf/gxfdataset.cpp 2018-12-14 21:35:53.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/gxf/gxfdataset.cpp 2019-06-28 11:14:28.000000000 +0000 @@ -31,7 +31,7 @@ #include "gdal_pam.h" #include "gxfopen.h" -CPL_CVSID("$Id: gxfdataset.cpp a542b2797f15f2ed694cfcee9ff17d86b339dfee 2018-04-02 00:24:03 +0200 Even Rouault $") +CPL_CVSID("$Id: gxfdataset.cpp 58a4a80a17eba8916f07651edc7068817069d9ad 2019-05-09 21:02:09 +0200 Even Rouault $") /************************************************************************/ /* ==================================================================== */ @@ -270,28 +270,22 @@ /* we also now verify that there is a #GRID keyword before */ /* passing it off to GXFOpen(). We check in the first 50K. */ /* -------------------------------------------------------------------- */ - VSILFILE *fp = poOpenInfo->fpL; - poOpenInfo->fpL = nullptr; - - const size_t BIGBUFSIZE = 50000; - char *pszBigBuf = (char *) CPLMalloc(BIGBUFSIZE); - const int nBytesRead = - static_cast(VSIFReadL( pszBigBuf, 1, BIGBUFSIZE, fp )); - VSIFCloseL( fp ); - + poOpenInfo->TryToIngest(50000); bool bGotGrid = false; - for( int i = 0; i < nBytesRead - 5 && !bGotGrid; i++ ) + const char* pszBigBuf = (const char*)poOpenInfo->pabyHeader; + for( int i = 0; i < poOpenInfo->nHeaderBytes - 5 && !bGotGrid; i++ ) { if( pszBigBuf[i] == '#' && STARTS_WITH_CI(pszBigBuf+i+1, "GRID") ) - bGotGrid = TRUE; + bGotGrid = true; } - CPLFree( pszBigBuf ); - if( !bGotGrid ) return nullptr; + VSIFCloseL( poOpenInfo->fpL ); + poOpenInfo->fpL = nullptr; + /* -------------------------------------------------------------------- */ /* Try opening the dataset. */ /* -------------------------------------------------------------------- */ diff -Nru gdal-2.4.0+dfsg/frmts/hdf5/bagdataset.cpp gdal-2.4.2+dfsg/frmts/hdf5/bagdataset.cpp --- gdal-2.4.0+dfsg/frmts/hdf5/bagdataset.cpp 2018-12-14 21:35:55.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/hdf5/bagdataset.cpp 2019-06-28 11:12:36.000000000 +0000 @@ -46,7 +46,7 @@ #include #include -CPL_CVSID("$Id: bagdataset.cpp a6e444d39b9b42561e868b82a134c009cf652391 2018-10-06 11:38:18 +0200 Even Rouault $") +CPL_CVSID("$Id: bagdataset.cpp efc6cf7df41f20a11cdd654cc72f2e20f8d2952a 2019-03-26 20:41:16 +0100 Even Rouault $") #if defined(H5_VERSION_GE) // added in 1.8.7 # if !H5_VERSION_GE(1,8,13) @@ -3280,7 +3280,7 @@ H5Tclose(datatype); H5Dclose(hMDDS); - if( strlen(pszXMLMetadata) == 0 ) + if( pszXMLMetadata == nullptr || pszXMLMetadata[0] == 0 ) return; // Try to get the geotransform. diff -Nru gdal-2.4.0+dfsg/frmts/hdf5/gh5_convenience.cpp gdal-2.4.2+dfsg/frmts/hdf5/gh5_convenience.cpp --- gdal-2.4.0+dfsg/frmts/hdf5/gh5_convenience.cpp 2018-12-14 21:35:55.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/hdf5/gh5_convenience.cpp 2019-06-28 11:12:36.000000000 +0000 @@ -28,7 +28,7 @@ #include "gh5_convenience.h" -CPL_CVSID("$Id: gh5_convenience.cpp de35b73572bc3545ba4b5c3c72a6e340249339cf 2018-08-27 15:05:29 +0200 Even Rouault $") +CPL_CVSID("$Id: gh5_convenience.cpp 35e18b0537329030e19114390038054101b7f25c 2019-04-17 22:42:01 +0200 Even Rouault $") /************************************************************************/ /* GH5_FetchAttribute(CPLString) */ @@ -137,7 +137,9 @@ H5Aread(hAttr, hAttrNativeType, buf); // Translate to double. - if( H5Tequal(H5T_NATIVE_INT, hAttrNativeType) ) + if( H5Tequal(H5T_NATIVE_SHORT, hAttrNativeType) ) + dfResult = *((short *)buf); + else if( H5Tequal(H5T_NATIVE_INT, hAttrNativeType) ) dfResult = *((int *)buf); else if( H5Tequal(H5T_NATIVE_FLOAT, hAttrNativeType) ) dfResult = *((float *)buf); diff -Nru gdal-2.4.0+dfsg/frmts/hdf5/hdf5dataset.cpp gdal-2.4.2+dfsg/frmts/hdf5/hdf5dataset.cpp --- gdal-2.4.0+dfsg/frmts/hdf5/hdf5dataset.cpp 2018-12-14 21:35:55.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/hdf5/hdf5dataset.cpp 2019-06-28 11:12:36.000000000 +0000 @@ -50,7 +50,7 @@ extern "C" int CPL_DLL GDALIsInGlobalDestructor(void); -CPL_CVSID("$Id: hdf5dataset.cpp fffad32a4d441c99fa807efac7c6fe7a2dc4a72b 2018-09-20 00:05:59 +0200 Even Rouault $") +CPL_CVSID("$Id: hdf5dataset.cpp 825662d03251faac29c5c683c74694ba56124e90 2019-06-28 12:04:09 +0200 Even Rouault $") constexpr size_t MAX_METADATA_LEN = 32768; @@ -1078,30 +1078,48 @@ szValue[0] = '\0'; H5Aread(hAttrID, hAttrNativeType, buf); } - if( H5Tequal(H5T_NATIVE_CHAR, hAttrNativeType ) || - H5Tequal(H5T_NATIVE_SCHAR, hAttrNativeType) ) + const bool bIsSCHAR = H5Tequal(H5T_NATIVE_SCHAR, hAttrNativeType) > 0; + const bool bIsUCHAR = H5Tequal(H5T_NATIVE_UCHAR, hAttrNativeType) > 0; + if( (bIsSCHAR || bIsUCHAR) && + CPLTestBool(CPLGetConfigOption("GDAL_HDF5_CHAR_AS_STRING", "NO")) ) { + // Compatibility mode with ancient GDAL versions where we consider + // array of SCHAR/UCHAR as strings. Likely inappropriate mode... for( hsize_t i = 0; i < nAttrElmts; i++ ) { - snprintf(szData, nDataLen, "%c ", static_cast(buf)[i]); + snprintf(szData, nDataLen, "%c", + static_cast(buf)[i]); if( CPLStrlcat(szValue, szData, MAX_METADATA_LEN) >= MAX_METADATA_LEN ) CPLError(CE_Warning, CPLE_OutOfMemory, "Header data too long. Truncated"); } } - else if( H5Tequal(H5T_NATIVE_UCHAR, hAttrNativeType) ) + else if( bIsSCHAR ) { for( hsize_t i = 0; i < nAttrElmts; i++ ) { - snprintf(szData, nDataLen, "%c", static_cast(buf)[i]); + snprintf(szData, nDataLen, "%d ", + static_cast(buf)[i]); if( CPLStrlcat(szValue, szData, MAX_METADATA_LEN) >= MAX_METADATA_LEN ) CPLError(CE_Warning, CPLE_OutOfMemory, "Header data too long. Truncated"); } } - else if( H5Tequal(H5T_NATIVE_SHORT, hAttrNativeType) ) + else if( bIsUCHAR ) + { + for( hsize_t i = 0; i < nAttrElmts; i++ ) + { + snprintf(szData, nDataLen, "%u ", + static_cast(buf)[i]); + if( CPLStrlcat(szValue, szData, MAX_METADATA_LEN) >= + MAX_METADATA_LEN ) + CPLError(CE_Warning, CPLE_OutOfMemory, + "Header data too long. Truncated"); + } + } + else if( H5Tequal(H5T_NATIVE_SHORT, hAttrNativeType) > 0 ) { for( hsize_t i = 0; i < nAttrElmts; i++ ) { @@ -1112,11 +1130,11 @@ "Header data too long. Truncated"); } } - else if( H5Tequal(H5T_NATIVE_USHORT, hAttrNativeType) ) + else if( H5Tequal(H5T_NATIVE_USHORT, hAttrNativeType) > 0 ) { for( hsize_t i = 0; i < nAttrElmts; i++ ) { - snprintf(szData, nDataLen, "%ud ", + snprintf(szData, nDataLen, "%u ", static_cast(buf)[i]); if( CPLStrlcat(szValue, szData, MAX_METADATA_LEN) >= MAX_METADATA_LEN ) @@ -1124,7 +1142,7 @@ "Header data too long. Truncated"); } } - else if( H5Tequal(H5T_NATIVE_INT, hAttrNativeType) ) + else if( H5Tequal(H5T_NATIVE_INT, hAttrNativeType) > 0 ) { for( hsize_t i=0; i < nAttrElmts; i++ ) { @@ -1135,11 +1153,11 @@ "Header data too long. Truncated"); } } - else if( H5Tequal(H5T_NATIVE_UINT, hAttrNativeType) ) + else if( H5Tequal(H5T_NATIVE_UINT, hAttrNativeType) > 0 ) { for( hsize_t i = 0; i < nAttrElmts; i++ ) { - snprintf(szData, nDataLen, "%ud ", + snprintf(szData, nDataLen, "%u ", static_cast(buf)[i]); if( CPLStrlcat(szValue, szData, MAX_METADATA_LEN) >= MAX_METADATA_LEN ) @@ -1147,7 +1165,7 @@ "Header data too long. Truncated"); } } - else if( H5Tequal(H5T_NATIVE_LONG, hAttrNativeType) ) + else if( H5Tequal(H5T_NATIVE_LONG, hAttrNativeType) > 0 ) { for( hsize_t i = 0; i < nAttrElmts; i++ ) { @@ -1158,7 +1176,7 @@ "Header data too long. Truncated"); } } - else if( H5Tequal(H5T_NATIVE_ULONG, hAttrNativeType) ) + else if( H5Tequal(H5T_NATIVE_ULONG, hAttrNativeType) > 0 ) { for( hsize_t i = 0; i < nAttrElmts; i++ ) { snprintf(szData, nDataLen, "%lu ", @@ -1169,7 +1187,7 @@ "Header data too long. Truncated"); } } - else if( H5Tequal(H5T_NATIVE_FLOAT, hAttrNativeType) ) + else if( H5Tequal(H5T_NATIVE_FLOAT, hAttrNativeType) > 0 ) { for( hsize_t i = 0; i < nAttrElmts; i++ ) { @@ -1181,7 +1199,7 @@ "Header data too long. Truncated"); } } - else if( H5Tequal(H5T_NATIVE_DOUBLE, hAttrNativeType) ) + else if( H5Tequal(H5T_NATIVE_DOUBLE, hAttrNativeType) > 0 ) { for( hsize_t i = 0; i < nAttrElmts; i++ ) { diff -Nru gdal-2.4.0+dfsg/frmts/hdf5/hdf5imagedataset.cpp gdal-2.4.2+dfsg/frmts/hdf5/hdf5imagedataset.cpp --- gdal-2.4.0+dfsg/frmts/hdf5/hdf5imagedataset.cpp 2018-12-14 21:35:55.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/hdf5/hdf5imagedataset.cpp 2019-06-28 11:12:36.000000000 +0000 @@ -33,12 +33,13 @@ #include "gdal_frmts.h" #include "gdal_pam.h" #include "gdal_priv.h" +#include "gh5_convenience.h" #include "hdf5dataset.h" #include "ogr_spatialref.h" #include -CPL_CVSID("$Id: hdf5imagedataset.cpp fffad32a4d441c99fa807efac7c6fe7a2dc4a72b 2018-09-20 00:05:59 +0200 Even Rouault $") +CPL_CVSID("$Id: hdf5imagedataset.cpp 35e18b0537329030e19114390038054101b7f25c 2019-04-17 22:42:01 +0200 Even Rouault $") // Release 1.6.3 or 1.6.4 changed the type of count in some API functions. @@ -234,7 +235,6 @@ virtual CPLErr IReadBlock( int, int, void * ) override; virtual double GetNoDataValue( int * ) override; - virtual CPLErr SetNoDataValue( double ) override; // virtual CPLErr IWriteBlock( int, int, void * ); }; @@ -293,6 +293,12 @@ H5Pclose(listid); } + + // netCDF convention for nodata + bNoDataSet = GH5_FetchAttribute( + poDSIn->dataset_id, "_FillValue", dfNoDataValue); + if( !bNoDataSet ) + dfNoDataValue = -9999.0; } /************************************************************************/ @@ -313,18 +319,6 @@ } /************************************************************************/ -/* SetNoDataValue() */ -/************************************************************************/ -CPLErr HDF5ImageRasterBand::SetNoDataValue( double dfNoData ) - -{ - bNoDataSet = true; - dfNoDataValue = dfNoData; - - return CE_None; -} - -/************************************************************************/ /* IReadBlock() */ /************************************************************************/ CPLErr HDF5ImageRasterBand::IReadBlock( int nBlockXOff, int nBlockYOff, @@ -566,8 +560,6 @@ new HDF5ImageRasterBand(poDS, i, poDS->GetDataType(poDS->native)); poDS->SetBand(i, poBand); - if( poBand->bNoDataSet ) - poBand->SetNoDataValue(255); } poDS->CreateProjections(); @@ -745,7 +737,9 @@ // The Latitude and Longitude arrays must have a rank of 2 to retrieve // GCPs. - if( poH5Objects->nRank != 2 ) + if( poH5Objects->nRank != 2 || + poH5Objects->paDims[0] != static_cast(nRasterYSize) || + poH5Objects->paDims[1] != static_cast(nRasterXSize) ) { return CE_None; } @@ -755,6 +749,17 @@ // LatitudeDataspaceID = H5Dget_space(dataset_id); poH5Objects = HDF5FindDatasetObjects(poH5RootGroup, "Longitude"); + // GCPs. + if( poH5Objects == nullptr || + poH5Objects->nRank != 2 || + poH5Objects->paDims[0] != static_cast(nRasterYSize) || + poH5Objects->paDims[1] != static_cast(nRasterXSize) ) + { + if( LatitudeDatasetID > 0 ) + H5Dclose(LatitudeDatasetID); + return CE_None; + } + const hid_t LongitudeDatasetID = H5Dopen(hHDF5, poH5Objects->pszPath); // LongitudeDataspaceID = H5Dget_space(dataset_id); @@ -767,6 +772,15 @@ memset(Latitude, 0, nRasterXSize * nRasterYSize * sizeof(float)); memset(Longitude, 0, nRasterXSize * nRasterYSize * sizeof(float)); + // netCDF convention for nodata + double dfLatNoData = 0; + bool bHasLatNoData = GH5_FetchAttribute( + LatitudeDatasetID, "_FillValue", dfLatNoData); + + double dfLongNoData = 0; + bool bHasLongNoData = GH5_FetchAttribute( + LongitudeDatasetID, "_FillValue", dfLongNoData); + H5Dread(LatitudeDatasetID, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, Latitude); @@ -775,19 +789,10 @@ oSRS.SetWellKnownGeogCS("WGS84"); CPLFree(pszProjection); + pszProjection = nullptr; CPLFree(pszGCPProjection); - oSRS.exportToWkt(&pszProjection); oSRS.exportToWkt(&pszGCPProjection); - // Fill the GCPs list. - - nGCPCount = (nRasterYSize / nDeltaLat) * (nRasterXSize / nDeltaLon); - - pasGCPList = - static_cast(CPLCalloc(nGCPCount, sizeof(GDAL_GCP))); - - GDALInitGCPs(nGCPCount, pasGCPList); - const int nYLimit = (static_cast(nRasterYSize) / nDeltaLat) * nDeltaLat; const int nXLimit = @@ -801,19 +806,32 @@ bool bHasLonNearMinus180 = false; bool bHasLonNearPlus180 = false; bool bHasLonNearZero = false; + nGCPCount = 0; for( int j = 0; j < nYLimit; j += nDeltaLat ) { for( int i = 0; i < nXLimit; i += nDeltaLon ) { const int iGCP = j * nRasterXSize + i; + if( (bHasLatNoData && static_cast(dfLatNoData) == Latitude[iGCP]) || + (bHasLongNoData && static_cast(dfLongNoData) == Longitude[iGCP]) ) + continue; if( Longitude[iGCP] > 170 && Longitude[iGCP] <= 180 ) bHasLonNearPlus180 = true; if( Longitude[iGCP] < -170 && Longitude[iGCP] >= -180 ) bHasLonNearMinus180 = true; if( fabs(Longitude[iGCP]) < 90 ) bHasLonNearZero = true; + nGCPCount ++; } } + + // Fill the GCPs list. + + pasGCPList = + static_cast(CPLCalloc(nGCPCount, sizeof(GDAL_GCP))); + + GDALInitGCPs(nGCPCount, pasGCPList); + const char *pszShiftGCP = CPLGetConfigOption("HDF5_SHIFT_GCPX_BY_180", nullptr); const bool bAdd180 = @@ -827,6 +845,9 @@ for( int i = 0; i < nXLimit; i += nDeltaLon ) { const int iGCP = j * nRasterXSize + i; + if( (bHasLatNoData && static_cast(dfLatNoData) == Latitude[iGCP]) || + (bHasLongNoData && static_cast(dfLongNoData) == Longitude[iGCP]) ) + continue; pasGCPList[k].dfGCPX = static_cast(Longitude[iGCP]); if( bAdd180 ) pasGCPList[k].dfGCPX += 180.0; diff -Nru gdal-2.4.0+dfsg/frmts/jpeg/jpgdataset.cpp gdal-2.4.2+dfsg/frmts/jpeg/jpgdataset.cpp --- gdal-2.4.0+dfsg/frmts/jpeg/jpgdataset.cpp 2018-12-14 21:36:01.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/jpeg/jpgdataset.cpp 2019-06-28 11:13:33.000000000 +0000 @@ -69,7 +69,7 @@ #include "memdataset.h" #include "vsidataio.h" -CPL_CVSID("$Id: jpgdataset.cpp 8bf714fd034266eb6ad9d1ae6359bc61dafcefd8 2018-06-27 00:58:15 +0200 Even Rouault $") +CPL_CVSID("$Id: jpgdataset.cpp 4d4e33ba2f01d083c06aadf59934e6cb57c4a1fc 2019-02-25 12:00:47 +0100 Even Rouault $") constexpr int TIFF_VERSION = 42; @@ -1345,9 +1345,9 @@ bool JPGDataset::ErrorOutOnNonFatalError() { - if( sErrorStruct.bNonFatalErrorEncountered ) + if( sUserData.bNonFatalErrorEncountered ) { - sErrorStruct.bNonFatalErrorEncountered = false; + sUserData.bNonFatalErrorEncountered = false; return true; } return false; @@ -1364,7 +1364,7 @@ return CE_None; // setup to trap a fatal error. - if (setjmp(sErrorStruct.setjmp_buffer)) + if (setjmp(sUserData.setjmp_buffer)) return CE_Failure; if (!bHasDoneJpegStartDecompress) @@ -1661,7 +1661,7 @@ { // Setup to trap a fatal error. - if (setjmp(sErrorStruct.setjmp_buffer)) + if (setjmp(sUserData.setjmp_buffer)) return CE_Failure; J_COLOR_SPACE colorSpace = sDInfo.out_color_space; @@ -2042,7 +2042,7 @@ JPGDataset *&poDS ) { // Will detect mismatch between compile-time and run-time libjpeg versions. - if (setjmp(poDS->sErrorStruct.setjmp_buffer)) + if (setjmp(poDS->sUserData.setjmp_buffer)) { #if defined(JPEG_DUAL_MODE_8_12) && !defined(JPGDataset) if (poDS->sDInfo.data_precision == 12 && poDS->fpImage != nullptr) @@ -2169,9 +2169,9 @@ poDS->sDInfo.err = jpeg_std_error(&poDS->sJErr); poDS->sJErr.error_exit = JPGDataset::ErrorExit; - poDS->sErrorStruct.p_previous_emit_message = poDS->sJErr.emit_message; + poDS->sUserData.p_previous_emit_message = poDS->sJErr.emit_message; poDS->sJErr.emit_message = JPGDataset::EmitMessage; - poDS->sDInfo.client_data = &poDS->sErrorStruct; + poDS->sDInfo.client_data = &poDS->sUserData; jpeg_create_decompress(&poDS->sDInfo); poDS->bHasDoneJpegCreateDecompress = true; @@ -2562,8 +2562,8 @@ void JPGDataset::ErrorExit(j_common_ptr cinfo) { - GDALJPEGErrorStruct *psErrorStruct = - static_cast(cinfo->client_data); + GDALJPEGUserData *psUserData = + static_cast(cinfo->client_data); char buffer[JMSG_LENGTH_MAX] = {}; // Create the message. @@ -2578,7 +2578,7 @@ CPLError(CE_Failure, CPLE_AppDefined, "libjpeg: %s", buffer); // Return control to the setjmp point. - longjmp(psErrorStruct->setjmp_buffer, 1); + longjmp(psUserData->setjmp_buffer, 1); } /************************************************************************/ @@ -2587,12 +2587,12 @@ void JPGDataset::EmitMessage(j_common_ptr cinfo, int msg_level) { - GDALJPEGErrorStruct *psErrorStruct = - static_cast(cinfo->client_data); + GDALJPEGUserData *psUserData = + static_cast(cinfo->client_data); if( msg_level >= 0 ) // Trace message. { - if( psErrorStruct->p_previous_emit_message != nullptr ) - psErrorStruct->p_previous_emit_message(cinfo, msg_level); + if( psUserData->p_previous_emit_message != nullptr ) + psUserData->p_previous_emit_message(cinfo, msg_level); } else { @@ -2614,7 +2614,7 @@ if( CPLTestBool( CPLGetConfigOption("GDAL_ERROR_ON_LIBJPEG_WARNING", "NO")) ) { - psErrorStruct->bNonFatalErrorEncountered = true; + psUserData->bNonFatalErrorEncountered = true; CPLError(CE_Failure, CPLE_AppDefined, "libjpeg: %s", buffer); } else @@ -2643,20 +2643,18 @@ { if (cinfo->is_decompressor) { + GDALJPEGUserData *psUserData = + static_cast(cinfo->client_data); const int scan_no = reinterpret_cast(cinfo)->input_scan_number; - const int MAX_SCANS = atoi( - CPLGetConfigOption("GDAL_JPEG_MAX_ALLOWED_SCAN_NUMBER", "100")); - if (scan_no >= MAX_SCANS) + if (scan_no >= psUserData->nMaxScans) { CPLError(CE_Failure, CPLE_AppDefined, "Scan number %d exceeds maximum scans (%d)", - scan_no, MAX_SCANS); + scan_no, psUserData->nMaxScans); - GDALJPEGErrorStruct *psErrorStruct = - static_cast(cinfo->client_data); // Return control to the setjmp point. - longjmp(psErrorStruct->setjmp_buffer, 1); + longjmp(psUserData->setjmp_buffer, 1); } } } @@ -3042,8 +3040,8 @@ } VSILFILE *fpImage = nullptr; - GDALJPEGErrorStruct sErrorStruct; - sErrorStruct.bNonFatalErrorEncountered = false; + GDALJPEGUserData sUserData; + sUserData.bNonFatalErrorEncountered = false; GDALDataType eDT = poSrcDS->GetRasterBand(1)->GetRasterDataType(); #if defined(JPEG_LIB_MK1_OR_12BIT) || defined(JPEG_DUAL_MODE_8_12) @@ -3131,7 +3129,7 @@ pfnProgress, pProgressData, fpImage, eDT, nQuality, bAppendMask, - sErrorStruct, sCInfo, sJErr, pabyScanline); + sUserData, sCInfo, sJErr, pabyScanline); } GDALDataset * @@ -3143,13 +3141,13 @@ GDALDataType eDT, int nQuality, bool bAppendMask, - GDALJPEGErrorStruct &sErrorStruct, + GDALJPEGUserData &sUserData, struct jpeg_compress_struct &sCInfo, struct jpeg_error_mgr &sJErr, GByte *&pabyScanline) { - if (setjmp(sErrorStruct.setjmp_buffer)) + if (setjmp(sUserData.setjmp_buffer)) { if( fpImage ) VSIFCloseL(fpImage); @@ -3159,12 +3157,12 @@ // Initialize JPG access to the file. sCInfo.err = jpeg_std_error(&sJErr); sJErr.error_exit = JPGDataset::ErrorExit; - sErrorStruct.p_previous_emit_message = sJErr.emit_message; + sUserData.p_previous_emit_message = sJErr.emit_message; sJErr.emit_message = JPGDataset::EmitMessage; - sCInfo.client_data = &sErrorStruct; + sCInfo.client_data = &sUserData; jpeg_create_compress(&sCInfo); - if (setjmp(sErrorStruct.setjmp_buffer)) + if (setjmp(sUserData.setjmp_buffer)) { if( fpImage ) VSIFCloseL(fpImage); @@ -3294,7 +3292,7 @@ pabyScanline = static_cast(CPLMalloc(nBands * nXSize * nWorkDTSize)); - if (setjmp(sErrorStruct.setjmp_buffer)) + if (setjmp(sUserData.setjmp_buffer)) { VSIFCloseL(fpImage); CPLFree(pabyScanline); diff -Nru gdal-2.4.0+dfsg/frmts/jpeg/jpgdataset.h gdal-2.4.2+dfsg/frmts/jpeg/jpgdataset.h --- gdal-2.4.0+dfsg/frmts/jpeg/jpgdataset.h 2018-12-14 21:36:01.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/jpeg/jpgdataset.h 2019-06-28 11:13:33.000000000 +0000 @@ -133,18 +133,21 @@ my_jpeg_write_m_header p_jpeg_write_m_header, my_jpeg_write_m_byte p_jpeg_write_m_byte); -typedef struct GDALJPEGErrorStruct +class GDALJPEGUserData { +public: jmp_buf setjmp_buffer; - bool bNonFatalErrorEncountered; - void (*p_previous_emit_message)(j_common_ptr cinfo, int msg_level); - GDALJPEGErrorStruct() : - bNonFatalErrorEncountered(false), - p_previous_emit_message(nullptr) + bool bNonFatalErrorEncountered = false; + void (*p_previous_emit_message)(j_common_ptr cinfo, int msg_level) = nullptr; + int nMaxScans; + + GDALJPEGUserData() : + nMaxScans(atoi( + CPLGetConfigOption("GDAL_JPEG_MAX_ALLOWED_SCAN_NUMBER", "100"))) { memset(&setjmp_buffer, 0, sizeof(setjmp_buffer)); } -} GDALJPEGErrorStruct; +}; /************************************************************************/ /* ==================================================================== */ @@ -271,7 +274,7 @@ class JPGDataset final: public JPGDatasetCommon { - GDALJPEGErrorStruct sErrorStruct; + GDALJPEGUserData sUserData; bool ErrorOutOnNonFatalError(); @@ -310,7 +313,7 @@ const char *pszFilename, GDALDataset *poSrcDS, char **papszOptions, GDALProgressFunc pfnProgress, void *pProgressData, VSILFILE *fpImage, GDALDataType eDT, int nQuality, bool bAppendMask, - GDALJPEGErrorStruct &sErrorStruct, struct jpeg_compress_struct &sCInfo, + GDALJPEGUserData &sUserData, struct jpeg_compress_struct &sCInfo, struct jpeg_error_mgr &sJErr, GByte *&pabyScanline); static void ErrorExit(j_common_ptr cinfo); }; diff -Nru gdal-2.4.0+dfsg/frmts/kea/keaband.cpp gdal-2.4.2+dfsg/frmts/kea/keaband.cpp --- gdal-2.4.0+dfsg/frmts/kea/keaband.cpp 2018-12-14 21:36:25.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/kea/keaband.cpp 2019-06-28 11:12:57.000000000 +0000 @@ -39,7 +39,7 @@ #include -CPL_CVSID("$Id: keaband.cpp 2519a7eb0e1649dbf8625ae8ffc7bb7c3ef9514b 2018-07-10 12:05:23 +0100 Robert Coup $") +CPL_CVSID("$Id: keaband.cpp 30fefc6cb8733527264a5f2501daabfbed1ca1ed 2019-06-26 21:47:17 +1000 Sam Gillingham $") // constructor KEARasterBand::KEARasterBand( KEADataset *pDataset, int nSrcBand, GDALAccess eAccessIn, kealib::KEAImageIO *pImageIO, int *pRefCount ): @@ -375,6 +375,11 @@ // only deal with 'default' domain - no geolocation etc if( ( pszDomain != nullptr ) && ( *pszDomain != '\0' ) ) return CE_Failure; + + // kealib doesn't currently support removing values + if( pszValue == nullptr ) + return CE_Failure; + try { // if it is LAYER_TYPE handle it separately diff -Nru gdal-2.4.0+dfsg/frmts/kmlsuperoverlay/kmlsuperoverlaydataset.cpp gdal-2.4.2+dfsg/frmts/kmlsuperoverlay/kmlsuperoverlaydataset.cpp --- gdal-2.4.0+dfsg/frmts/kmlsuperoverlay/kmlsuperoverlaydataset.cpp 2018-12-14 21:36:26.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/kmlsuperoverlay/kmlsuperoverlaydataset.cpp 2019-06-28 11:14:28.000000000 +0000 @@ -46,7 +46,7 @@ #include "../vrt/gdal_vrt.h" #include "../vrt/vrtdataset.h" -CPL_CVSID("$Id: kmlsuperoverlaydataset.cpp 1fba267bc9a1ce44ce8e19d32191b26fb6dc48ea 2018-10-18 12:20:55 +0200 Even Rouault $") +CPL_CVSID("$Id: kmlsuperoverlaydataset.cpp 930c0318981abb49535983158a708dabe419a5aa 2019-03-15 12:36:15 +0100 Even Rouault $") using namespace std; @@ -2450,7 +2450,47 @@ { CPLXMLNode* psGO = CPLGetXMLNode(psRoot, "=kml.GroundOverlay"); if( psGO == nullptr ) - return nullptr; + { + // Otherwise look for kml.Document.Folder.GroundOverlay if there's + // a single occurrence of Folder and GroundOverlay + auto psDoc = CPLGetXMLNode(psRoot, "=kml.Document"); + if( psDoc == nullptr ) + { + return nullptr; + } + CPLXMLNode* psFolder = nullptr; + for( auto psIter = psDoc->psChild; psIter; psIter = psIter->psNext ) + { + if( psIter->eType == CXT_Element && + strcmp(psIter->pszValue, "Folder") == 0 ) + { + if( psFolder == nullptr ) + psFolder = psIter; + else + return nullptr; + } + } + if( psFolder == nullptr ) + { + return nullptr; + } + for( auto psIter = psFolder->psChild; psIter; psIter = psIter->psNext ) + { + if( psIter->eType == CXT_Element && + strcmp(psIter->pszValue, "GroundOverlay") == 0 ) + { + if( psGO == nullptr ) + psGO = psIter; + else + return nullptr; + } + } + if( psGO == nullptr ) + { + return nullptr; + } + } + const char* pszHref = CPLGetXMLValue(psGO, "Icon.href", nullptr); if( pszHref == nullptr ) return nullptr; @@ -2483,6 +2523,10 @@ poDS->GetRasterBand(i)->SetColorInterpretation( poImageDS->GetRasterBand(i)->GetColorInterpretation() ); + + auto poCT = poImageDS->GetRasterBand(i)->GetColorTable(); + if( poCT ) + poDS->GetRasterBand(i)->SetColorTable(poCT); } poImageDS->Dereference(); double adfGeoTransform[6] = { diff -Nru gdal-2.4.0+dfsg/frmts/mrf/GNUmakefile gdal-2.4.2+dfsg/frmts/mrf/GNUmakefile --- gdal-2.4.0+dfsg/frmts/mrf/GNUmakefile 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/mrf/GNUmakefile 2019-06-28 11:09:58.000000000 +0000 @@ -44,7 +44,7 @@ LIBLERC = libLERC OBJ := $(OBJ) LERC_band.o XTRA_OPT := $(XTRA_OPT) -DLERC -I$(LIBLERC) -I../../third_party/LercLib -SUBLIBS := libLERC +SUBLIBS := lib-libLERC endif endif @@ -54,10 +54,12 @@ clean: rm -rf *.o *.lo .libs/$(OBJ) .libs $(O_OBJ) $(LO_O_OBJ) gdal_mrf.so.1 - cd $(LIBLERC); $(MAKE) clean + (cd libLERC; $(MAKE) clean) -install-obj: $(O_OBJ:.o=.$(OBJ_EXT)) - cd $(LIBLERC); $(MAKE) install-obj +install-obj: $(SUBLIBS) $(O_OBJ:.o=.$(OBJ_EXT)) + +lib-libLERC: + (cd libLERC; $(MAKE) install-obj) $(OBJ) $(O_OBJ): $(DEPENDS) diff -Nru gdal-2.4.0+dfsg/frmts/mrf/marfa_dataset.cpp gdal-2.4.2+dfsg/frmts/mrf/marfa_dataset.cpp --- gdal-2.4.0+dfsg/frmts/mrf/marfa_dataset.cpp 2018-12-14 21:36:28.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/mrf/marfa_dataset.cpp 2019-06-28 11:14:25.000000000 +0000 @@ -56,7 +56,7 @@ #include #include -CPL_CVSID("$Id: marfa_dataset.cpp 71d76bef344fbf58e14e5817d80230acefc78e30 2018-11-07 03:00:41 +0100 Even Rouault $") +CPL_CVSID("$Id: marfa_dataset.cpp d42d738d7f7c3a3cf78d95daa3823868c39a1b64 2019-03-31 13:33:09 +0200 Even Rouault $") using std::vector; using std::string; @@ -924,16 +924,20 @@ image.pagesize.x > INT_MAX / image.pagesize.y || image.pagesize.x * image.pagesize.y > INT_MAX / image.pagesize.z || image.pagesize.x * image.pagesize.y * image.pagesize.z > INT_MAX / image.pagesize.c || - image.pagesize.x * image.pagesize.y * image.pagesize.z* image.pagesize.c > INT_MAX / (GDALGetDataTypeSize(image.dt) / 8) ) + image.pagesize.x * image.pagesize.y * image.pagesize.z* image.pagesize.c > INT_MAX / GDALGetDataTypeSizeBytes(image.dt) ) { CPLError(CE_Failure, CPLE_AppDefined, "MRF page size too big"); return CE_Failure; } - image.pageSizeBytes = (GDALGetDataTypeSize(image.dt) / 8) * + image.pageSizeBytes = GDALGetDataTypeSizeBytes(image.dt) * image.pagesize.x * image.pagesize.y * image.pagesize.z * image.pagesize.c; // Calculate the page count, including the total for the level image.pagecount = pcount(image.size, image.pagesize); + if( image.pagecount.l < 0 ) + { + return CE_Failure; + } // Data File Name and base offset image.datfname = getFname(defimage, "DataFile", ds->GetFname(), ILComp_Ext[image.comp]); diff -Nru gdal-2.4.0+dfsg/frmts/mrf/marfa.h gdal-2.4.2+dfsg/frmts/mrf/marfa.h --- gdal-2.4.0+dfsg/frmts/mrf/marfa.h 2018-12-14 21:36:28.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/mrf/marfa.h 2019-06-28 11:14:25.000000000 +0000 @@ -34,7 +34,7 @@ */ /****************************************************************************** - * $Id: marfa.h 6ef13199b493973da285decbfcd5e2a763954b97 2018-06-07 05:46:42 -0400 luzpaz $ + * $Id: marfa.h d42d738d7f7c3a3cf78d95daa3823868c39a1b64 2019-03-31 13:33:09 +0200 Even Rouault $ * * Project: Meta Raster Format * Purpose: MRF structures @@ -53,6 +53,7 @@ #include #include +#include // For printing values #include #include @@ -273,13 +274,25 @@ } // Returns a pagecount per dimension, .l will have the total number +// or -1 in case of error static inline const ILSize pcount(const ILSize &size, const ILSize &psz) { ILSize pcnt; pcnt.x = pcount(size.x, psz.x); pcnt.y = pcount(size.y, psz.y); pcnt.z = pcount(size.z, psz.z); pcnt.c = pcount(size.c, psz.c); - pcnt.l = static_cast(pcnt.x) * pcnt.y * pcnt.z * pcnt.c; + auto xy = static_cast(pcnt.x) * pcnt.y; + auto zc = static_cast(pcnt.z) * pcnt.c; + if( zc != 0 && xy > std::numeric_limits::max() / zc ) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Integer overflow in page count computation"); + pcnt.l = -1; + } + else + { + pcnt.l = xy * zc; + } return pcnt; } diff -Nru gdal-2.4.0+dfsg/frmts/mrsid/mrsiddataset.cpp gdal-2.4.2+dfsg/frmts/mrsid/mrsiddataset.cpp --- gdal-2.4.0+dfsg/frmts/mrsid/mrsiddataset.cpp 2018-12-14 21:36:28.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/mrsid/mrsiddataset.cpp 2019-06-28 11:14:27.000000000 +0000 @@ -43,7 +43,7 @@ #include #include -CPL_CVSID("$Id: mrsiddataset.cpp 002b050d9a9ef403a732c1210784736ef97216d4 2018-04-09 21:34:55 +0200 Even Rouault $") +CPL_CVSID("$Id: mrsiddataset.cpp 7efbce79d3dd53e182805fccd605fb042ec0c82f 2019-04-23 10:55:47 +0200 Even Rouault $") CPL_C_START double GTIFAngleToDD( double dfAngle, int nUOMAngle ); @@ -1231,7 +1231,12 @@ { lt_uint32 iWidth, iHeight; dfCurrentMag = LTIUtils::levelToMag( iZoom ); - poImageReader->getDimsAtMag( dfCurrentMag, iWidth, iHeight ); + auto eLTStatus = poImageReader->getDimsAtMag( dfCurrentMag, iWidth, iHeight ); + if( !LT_SUCCESS(eLTStatus)) + { + CPLDebug( "MrSID", "Cannot open zoom level %d", iZoom); + return CE_Failure; + } nRasterXSize = iWidth; nRasterYSize = iHeight; } @@ -1675,9 +1680,14 @@ { poDS->papoOverviewDS[i] = new MrSIDDataset(bIsJP2); poDS->papoOverviewDS[i]->poImageReader = poDS->poImageReader; - poDS->papoOverviewDS[i]->OpenZoomLevel( i + 1 ); poDS->papoOverviewDS[i]->bIsOverview = TRUE; poDS->papoOverviewDS[i]->poParentDS = poDS; + if( poDS->papoOverviewDS[i]->OpenZoomLevel( i + 1 ) != CE_None ) + { + delete poDS->papoOverviewDS[i]; + poDS->nOverviewCount = i; + break; + } } } @@ -1685,7 +1695,11 @@ /* Create object for the whole image. */ /* -------------------------------------------------------------------- */ poDS->SetDescription( poOpenInfo->pszFilename ); - poDS->OpenZoomLevel( 0 ); + if( poDS->OpenZoomLevel( 0 ) != CE_None ) + { + delete poDS; + return nullptr; + } CPLDebug( "MrSID", "Opened image: width %d, height %d, bands %d", diff -Nru gdal-2.4.0+dfsg/frmts/netcdf/netcdfdataset.cpp gdal-2.4.2+dfsg/frmts/netcdf/netcdfdataset.cpp --- gdal-2.4.0+dfsg/frmts/netcdf/netcdfdataset.cpp 2018-12-14 21:36:31.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/netcdf/netcdfdataset.cpp 2019-06-28 11:14:20.000000000 +0000 @@ -64,7 +64,7 @@ #include "ogr_srs_api.h" -CPL_CVSID("$Id: netcdfdataset.cpp 0f65047e480bf148a10fbe20dd4c2baacc97e5de 2018-11-25 21:44:07 +0100 Markus Metz $") +CPL_CVSID("$Id: netcdfdataset.cpp 1078d24910313c910ac4820f21c01b309c01934d 2019-04-12 14:05:49 +0200 Even Rouault $") // Internal function declarations. @@ -3030,14 +3030,20 @@ CPLDebug("GDAL_netCDF", "set bBottomUp = %d from Y axis", static_cast(poDS->bBottomUp)); - // Convert ]180,360] longitude values to [-180,180]. + // Convert ]180,540] longitude values to ]-180,0]. if( NCDFIsVarLongitude(cdfid, nVarDimXID, nullptr) && CPLTestBool(CPLGetConfigOption("GDAL_NETCDF_CENTERLONG_180", - "YES")) ) + "YES")) ) { // If minimum longitude is > 180, subtract 360 from all. - if( std::min(pdfXCoord[0], pdfXCoord[xdim - 1]) > 180.0 ) + // Add a check on the maximum X value too, since NCDFIsVarLongitude() + // is not very specific by default (see https://github.com/OSGeo/gdal/issues/1440) + if( std::min(pdfXCoord[0], pdfXCoord[xdim - 1]) > 180.0 && + std::max(pdfXCoord[0], pdfXCoord[xdim - 1]) <= 540 ) { + CPLDebug("GDAL_netCDF", + "Offseting longitudes from ]180,540] to ]-180,180]. " + "Can be disabled with GDAL_NETCDF_CENTERLONG_180=NO"); for( size_t i = 0; i < xdim; i++ ) pdfXCoord[i] -= 360; } @@ -3122,11 +3128,12 @@ } else { - bool nWestIsLeft = (pdfXCoord[0] < pdfXCoord[xdim - 1]); + bool bWestIsLeft = (pdfXCoord[0] < pdfXCoord[xdim - 1]); // fix longitudes if longitudes should increase from // west to east, but west > east - if (!nWestIsLeft) + if (NCDFIsVarLongitude(cdfid, nVarDimXID, nullptr) && + !bWestIsLeft) { size_t ndecreases = 0; @@ -9374,6 +9381,8 @@ CPLDebug("GDAL_netCDF", "NCDFGetAttr1(%s) len=%ld type=%d", pszAttrName, nAttrLen, nAttrType); #endif + if( nAttrLen == 0 && nAttrType != NC_CHAR ) + return CE_Failure; /* Allocate guaranteed minimum size (use 10 or 20 if not a string) */ size_t nAttrValueSize = nAttrLen + 1; @@ -9692,6 +9701,14 @@ nAttrType = nTmpAttrType; } +#ifdef DEBUG + if( EQUAL(pszAttrName, "DEBUG_EMPTY_DOUBLE_ATTR" ) ) + { + nAttrType = NC_DOUBLE; + nAttrLen = 0; + } +#endif + /* now write the data */ if( nAttrType == NC_CHAR ) { diff -Nru gdal-2.4.0+dfsg/frmts/nitf/nitffile.c gdal-2.4.2+dfsg/frmts/nitf/nitffile.c --- gdal-2.4.0+dfsg/frmts/nitf/nitffile.c 2018-12-14 21:36:32.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/nitf/nitffile.c 2019-06-28 11:12:28.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: nitffile.c cf79f01d31f2de889a3045a3d09f944cb04d7071 2018-03-03 22:40:32Z Even Rouault $ + * $Id: nitffile.c cc20682d36d7147ec5c47be91b1f2c01f1e16040 2019-05-08 19:35:25 +0200 Even Rouault $ * * Project: NITF Read/Write Library * Purpose: Module responsible for opening NITF file, populating NITFFile @@ -34,7 +34,7 @@ #include "cpl_conv.h" #include "cpl_string.h" -CPL_CVSID("$Id: nitffile.c cf79f01d31f2de889a3045a3d09f944cb04d7071 2018-03-03 22:40:32Z Even Rouault $") +CPL_CVSID("$Id: nitffile.c cc20682d36d7147ec5c47be91b1f2c01f1e16040 2019-05-08 19:35:25 +0200 Even Rouault $") CPL_INLINE static void CPL_IGNORE_RET_VAL_INT(CPL_UNUSED int unused) {} @@ -2563,8 +2563,36 @@ pszCondVal = NITFFindValFromEnd(papszMD, *pnMDSize, pszMDItemName, NULL); if (pszCondVal == NULL) { + /* Needed for SENSRB */ + /* See https://github.com/OSGeo/gdal/issues/1520 */ + /* If the condition variable is not found at this level, */ + /* try to research it at upper levels by shortening on _ */ + /* separators */ + char* pszMDPrefixShortened = CPLStrdup(pszMDPrefix); + char* pszLastUnderscore = strrchr(pszMDPrefixShortened, '_'); + if( pszLastUnderscore ) + { + *pszLastUnderscore = 0; + pszLastUnderscore = strrchr(pszMDPrefixShortened, '_'); + } + while( pszLastUnderscore ) + { + pszLastUnderscore[1] = 0; + CPLFree(pszMDItemName); + pszMDItemName = CPLStrdup( + CPLSPrintf("%s%s", pszMDPrefixShortened, pszCondVar)); + pszCondVal = NITFFindValFromEnd(papszMD, *pnMDSize, pszMDItemName, NULL); + if( pszCondVal ) + break; + *pszLastUnderscore = 0; + pszLastUnderscore = strrchr(pszMDPrefixShortened, '_'); + } + CPLFree(pszMDPrefixShortened); + } + if( pszCondVal == NULL ) + { CPLDebug("NITF", "Cannot find if cond variable %s", - pszMDItemName); + pszCondVar); } else if ((bTestEqual && strcmp(pszCondVal, pszCondExpectedVal) == 0) || (!bTestEqual && strcmp(pszCondVal, pszCondExpectedVal) != 0)) diff -Nru gdal-2.4.0+dfsg/frmts/pdf/GNUmakefile gdal-2.4.2+dfsg/frmts/pdf/GNUmakefile --- gdal-2.4.0+dfsg/frmts/pdf/GNUmakefile 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pdf/GNUmakefile 2019-06-28 11:09:58.000000000 +0000 @@ -11,31 +11,7 @@ endif ifeq ($(HAVE_POPPLER),yes) -CPPFLAGS += -DHAVE_POPPLER -endif - -ifeq ($(POPPLER_HAS_OPTCONTENT),yes) -CPPFLAGS += -DPOPPLER_HAS_OPTCONTENT -endif - -ifeq ($(POPPLER_BASE_STREAM_HAS_TWO_ARGS),yes) -CPPFLAGS += -DPOPPLER_BASE_STREAM_HAS_TWO_ARGS -endif - -ifeq ($(POPPLER_0_20_OR_LATER),yes) -CPPFLAGS += -DPOPPLER_0_20_OR_LATER -endif - -ifeq ($(POPPLER_0_23_OR_LATER),yes) -CPPFLAGS += -DPOPPLER_0_23_OR_LATER -endif - -ifeq ($(POPPLER_0_58_OR_LATER),yes) -CPPFLAGS += -DPOPPLER_0_58_OR_LATER -endif - -ifeq ($(POPPLER_0_69_OR_LATER),yes) -CPPFLAGS += -DPOPPLER_0_69_OR_LATER +CPPFLAGS += -DHAVE_POPPLER -DPOPPLER_MAJOR_VERSION=$(POPPLER_MAJOR_VERSION) -DPOPPLER_MINOR_VERSION=$(POPPLER_MINOR_VERSION) endif ifeq ($(HAVE_PODOFO),yes) diff -Nru gdal-2.4.0+dfsg/frmts/pdf/makefile.vc gdal-2.4.2+dfsg/frmts/pdf/makefile.vc --- gdal-2.4.0+dfsg/frmts/pdf/makefile.vc 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pdf/makefile.vc 2019-06-28 11:09:58.000000000 +0000 @@ -14,30 +14,16 @@ EXTRAFLAGS = -I..\vrt -I..\mem -I..\..\ogr\ogrsf_frmts\mem $(POPPLER_EXTRAFLAGS) $(PODOFO_EXTRAFLAGS) $(PDFIUM_EXTRAFLAGS) !IFDEF POPPLER_ENABLED -POPPLER_EXTRAFLAGS = $(POPPLER_CFLAGS) $(POPPLER_HAS_OPTCONTENT_FLAGS) $(POPPLER_BASE_STREAM_HAS_TWO_ARGS_FLAGS) $(POPPLER_0_20_OR_LATER_FLAGS) $(POPPLER_0_23_OR_LATER_FLAGS) $(POPPLER_0_58_OR_LATER_FLAGS) $(POPPLER_0_69_OR_LATER_FLAGS) -DHAVE_POPPLER - -!IFDEF POPPLER_HAS_OPTCONTENT -POPPLER_HAS_OPTCONTENT_FLAGS = -DPOPPLER_HAS_OPTCONTENT -!ENDIF - -!IFDEF POPPLER_BASE_STREAM_HAS_TWO_ARGS -POPPLER_BASE_STREAM_HAS_TWO_ARGS_FLAGS = -DPOPPLER_BASE_STREAM_HAS_TWO_ARGS -!ENDIF - -!IFDEF POPPLER_0_20_OR_LATER -POPPLER_0_20_OR_LATER_FLAGS = -DPOPPLER_0_20_OR_LATER -!ENDIF - -!IFDEF POPPLER_0_23_OR_LATER -POPPLER_0_23_OR_LATER_FLAGS = -DPOPPLER_0_23_OR_LATER -!ENDIF - -!IFDEF POPPLER_0_58_OR_LATER -POPPLER_0_58_OR_LATER_FLAGS = -DPOPPLER_0_58_OR_LATER -!ENDIF +POPPLER_EXTRAFLAGS = $(POPPLER_CFLAGS) $(POPPLER_VERSION_FLAGS) -DHAVE_POPPLER !IFDEF POPPLER_0_69_OR_LATER -POPPLER_0_69_OR_LATER_FLAGS = -DPOPPLER_0_69_OR_LATER +POPPLER_VERSION_FLAGS = -DPOPPLER_MAJOR_VERSION=0 -DPOPPLER_MINOR_VERSION=69 +!ELSEIFDEF POPPLER_0_58_OR_LATER +POPPLER_VERSION_FLAGS = -DPOPPLER_MAJOR_VERSION=0 -DPOPPLER_MINOR_VERSION=58 +!ELSEIFDEF POPPLER_MAJOR_VERSION +POPPLER_VERSION_FLAGS = -DPOPPLER_MAJOR_VERSION=$(POPPLER_MAJOR_VERSION) -DPOPPLER_MINOR_VERSION=$(POPPLER_MINOR_VERSION) +!ELSE +POPPLER_VERSION_FLAGS = -DPOPPLER_MAJOR_VERSION=0 -DPOPPLER_MINOR_VERSION=23 !ENDIF !ENDIF diff -Nru gdal-2.4.0+dfsg/frmts/pdf/pdfdataset.cpp gdal-2.4.2+dfsg/frmts/pdf/pdfdataset.cpp --- gdal-2.4.0+dfsg/frmts/pdf/pdfdataset.cpp 2018-12-14 21:37:15.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pdf/pdfdataset.cpp 2019-06-28 11:12:29.000000000 +0000 @@ -56,7 +56,7 @@ /* g++ -fPIC -g -Wall frmts/pdf/pdfdataset.cpp -shared -o gdal_PDF.so -Iport -Igcore -Iogr -L. -lgdal -lpoppler -I/usr/include/poppler */ -CPL_CVSID("$Id: pdfdataset.cpp 5a215e5c6b75f6d1d51dc4dea40c33d9e0e41dcd 2018-11-28 11:59:15 +0100 Even Rouault $") +CPL_CVSID("$Id: pdfdataset.cpp d295d0ebc3b41092ad072790c704c772098da210 2019-01-17 22:52:36 +0100 Even Rouault $") #if defined(HAVE_POPPLER) || defined(HAVE_PODOFO) || defined(HAVE_PDFIUM) @@ -130,7 +130,7 @@ public: ObjectAutoFree() {} ~ObjectAutoFree() { -#ifndef POPPLER_0_58_OR_LATER +#if !(POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58) obj.free(); #endif } @@ -176,17 +176,10 @@ void SetEnableText(int bFlag) { bEnableText = bFlag; } void SetEnableBitmap(int bFlag) { bEnableBitmap = bFlag; } - virtual void startPage(int pageNum, GfxState *state -#ifdef POPPLER_0_23_OR_LATER - ,XRef* xrefIn -#endif + virtual void startPage(int pageNum, GfxState *state,XRef* xrefIn ) override { - SplashOutputDev::startPage(pageNum, state -#ifdef POPPLER_0_23_OR_LATER - ,xrefIn -#endif - ); + SplashOutputDev::startPage(pageNum, state,xrefIn); SplashBitmap* poBitmap = getBitmap(); memset(poBitmap->getDataPtr(), 255, poBitmap->getRowSize() * poBitmap->getHeight()); } @@ -226,15 +219,6 @@ SplashOutputDev::beginTextObject(state); } -#ifndef POPPLER_0_23_OR_LATER - virtual GBool deviceHasTextClip(GfxState *state) override - { - if (bEnableText) - return SplashOutputDev::deviceHasTextClip(state); - return gFalse; - } -#endif - virtual void endTextObject(GfxState *state) override { if (bEnableText) @@ -260,7 +244,6 @@ } } -#ifdef POPPLER_0_20_OR_LATER virtual void setSoftMaskFromImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, @@ -279,7 +262,6 @@ if (bEnableBitmap) SplashOutputDev::unsetSoftMaskFromImageMask(state, baseMatrix); } -#endif virtual void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, @@ -1758,11 +1740,7 @@ } PDFDoc* poDoc = poDocPoppler; -#ifdef POPPLER_0_20_OR_LATER poSplashOut->startDoc(poDoc); -#else - poSplashOut->startDoc(poDoc->getXRef()); -#endif /* EVIL: we modify a private member... */ /* poppler (at least 0.12 and 0.14 versions) don't render correctly */ @@ -1770,12 +1748,10 @@ /* in those cases. This processing of optional content is an addition of */ /* poppler in comparison to original xpdf, which hasn't the issue. All in */ /* all, nullifying optContent removes the error message and improves the rendering */ -#ifdef POPPLER_HAS_OPTCONTENT Catalog* poCatalog = poDoc->getCatalog(); OCGs* poOldOCGs = poCatalog->optContent; if (!bUseOCG) poCatalog->optContent = nullptr; -#endif poDoc->displayPageSlice(poSplashOut, iPage, dfDPI, dfDPI, @@ -1785,9 +1761,7 @@ nReqXSize, nReqYSize); /* Restore back */ -#ifdef POPPLER_HAS_OPTCONTENT poCatalog->optContent = poOldOCGs; -#endif SplashBitmap* poBitmap = poSplashOut->getBitmap(); if (poBitmap->getWidth() != nReqXSize || poBitmap->getHeight() != nReqYSize) @@ -2294,7 +2268,7 @@ if (bUseLib.test(PDFLIB_POPPLER)) { poCatalogObjectPoppler = new ObjectAutoFree; -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 *poCatalogObjectPoppler->getObj() = poDocPoppler->getXRef()->getCatalog(); #else poDocPoppler->getXRef()->getCatalog(poCatalogObjectPoppler->getObj()); @@ -2592,16 +2566,10 @@ CPLError(CE_Failure, CPLE_AppDefined, "%s", osError.c_str()); } -#ifdef POPPLER_0_20_OR_LATER - static void PDFDatasetErrorFunction(void* /* userData*/, ErrorCategory /* eErrCategory */, -#ifdef POPPLER_0_23_OR_LATER Goffset nPos, -#else - int nPos, -#endif -#ifdef POPPLER_0_71_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 71 const char *pszMsg #else char *pszMsg @@ -2615,17 +2583,6 @@ osError += pszMsg; PDFDatasetErrorFunctionCommon(osError); } -#else -static void PDFDatasetErrorFunction(int nPos, char *pszMsg, va_list args) -{ - CPLString osError; - - if (nPos >= 0) - osError.Printf("Pos = %d, ", nPos); - osError += CPLString().vPrintf(pszMsg, args); - PDFDatasetErrorFunctionCommon(osError); -} -#endif #endif /************************************************************************/ @@ -3447,7 +3404,7 @@ } else { -#ifdef POPPLER_0_69_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 69 for( const auto& refOCGPair: optContentConfig->getOCGs() ) { auto ocg = refOCGPair.second.get(); @@ -3459,7 +3416,11 @@ #endif if( ocg != nullptr && ocg->getName() != nullptr ) { +#if (POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 72) + const char* pszLayerName = (const char*)ocg->getName()->c_str(); +#else const char* pszLayerName = (const char*)ocg->getName()->getCString(); +#endif AddLayer(pszLayerName); oLayerOCGMapPoppler[pszLayerName] = ocg; } @@ -3485,7 +3446,7 @@ { int i; int bAll = EQUAL(pszLayers, "ALL"); -#ifdef POPPLER_0_69_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 69 for( const auto& refOCGPair: optContentConfig->getOCGs() ) { auto ocg = refOCGPair.second.get(); @@ -4058,7 +4019,7 @@ GDALPDFObject* poPageObj = nullptr; #ifdef HAVE_POPPLER PDFDoc* poDocPoppler = nullptr; -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 Object oObj; #else ObjectAutoFree oObj; @@ -4082,11 +4043,7 @@ GooString* poUserPwd = nullptr; /* Set custom error handler for poppler errors */ -#ifdef POPPLER_0_20_OR_LATER setErrorCallback(PDFDatasetErrorFunction, nullptr); -#else - setErrorFunction(PDFDatasetErrorFunction); -#endif { CPLMutexHolderD(&hGlobalParamsMutex); @@ -4109,7 +4066,7 @@ if (pszUserPwd) poUserPwd = new GooString(pszUserPwd); -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 poDocPoppler = new PDFDoc(new VSIPDFFileStream(fp, pszFilename, std::move(oObj)), nullptr, poUserPwd); #else oObj.getObj()->initNull(); @@ -4787,7 +4744,11 @@ GooString* poMetadata = poCatalogPoppler->readMetadata(); if (poMetadata) { +#if (POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 72) + const char* pszContent = poMetadata->c_str(); +#else const char* pszContent = poMetadata->getCString(); +#endif if (pszContent != nullptr && STARTS_WITH(pszContent, "getXRef()->isOk() ) { Object oInfo; -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 oInfo = poDocPoppler->getDocInfo(); #else poDocPoppler->getDocInfo(&oInfo); #endif GDALPDFObjectPoppler oInfoObjPoppler(&oInfo, FALSE); poDS->ParseInfo(&oInfoObjPoppler); -#ifndef POPPLER_0_58_OR_LATER +#if !(POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58) oInfo.free(); #endif } diff -Nru gdal-2.4.0+dfsg/frmts/pdf/pdfio.cpp gdal-2.4.2+dfsg/frmts/pdf/pdfio.cpp --- gdal-2.4.0+dfsg/frmts/pdf/pdfio.cpp 2018-12-14 21:37:15.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pdf/pdfio.cpp 2019-06-28 11:12:29.000000000 +0000 @@ -34,9 +34,8 @@ #include "cpl_vsi.h" -CPL_CVSID("$Id: pdfio.cpp 7e07230bbff24eb333608de4dbd460b7312839d0 2017-12-11 19:08:47Z Even Rouault $") +CPL_CVSID("$Id: pdfio.cpp 29f4dfbcac2de718043f862166cd639ab578b552 2019-01-17 22:36:09 +0100 Even Rouault $") -#ifdef POPPLER_BASE_STREAM_HAS_TWO_ARGS /* Poppler 0.31.0 is the first one that needs to know the file size */ static vsi_l_offset VSIPDFFileStreamGetSize(VSILFILE* f) { @@ -45,7 +44,6 @@ VSIFSeekL(f, 0, SEEK_SET); return nSize; } -#endif /************************************************************************/ /* VSIPDFFileStream() */ @@ -55,12 +53,10 @@ VSILFILE* fIn, const char* pszFilename, makeSubStream_object_type dictA ) : -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 BaseStream(std::move(dictA), (Goffset)VSIPDFFileStreamGetSize(fIn)), -#elif defined(POPPLER_BASE_STREAM_HAS_TWO_ARGS) - BaseStream(dictA, (setPos_offset_type)VSIPDFFileStreamGetSize(fIn)), #else - BaseStream(dictA), + BaseStream(dictA, (setPos_offset_type)VSIPDFFileStreamGetSize(fIn)), #endif poParent(nullptr), poFilename(new GooString(pszFilename)), @@ -83,12 +79,10 @@ vsi_l_offset startA, GBool limitedA, vsi_l_offset lengthA, makeSubStream_object_type dictA) : -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 BaseStream(std::move(dictA), (Goffset)lengthA), -#elif defined(POPPLER_BASE_STREAM_HAS_TWO_ARGS) - BaseStream(dictA, (makeSubStream_offset_type)lengthA), #else - BaseStream(dictA), + BaseStream(dictA, (makeSubStream_offset_type)lengthA), #endif poParent(poParentIn), poFilename(poParentIn->poFilename), @@ -122,13 +116,13 @@ /* copy() */ /************************************************************************/ -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 BaseStream* VSIPDFFileStream::copy() { return new VSIPDFFileStream(poParent, nStart, bLimited, nLength, dict.copy()); } -#elif defined(POPPLER_0_23_OR_LATER) +#else BaseStream* VSIPDFFileStream::copy() { return new VSIPDFFileStream(poParent, nStart, bLimited, @@ -142,7 +136,7 @@ Stream *VSIPDFFileStream::makeSubStream(makeSubStream_offset_type startA, GBool limitedA, makeSubStream_offset_type lengthA, makeSubStream_object_type dictA) { -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 return new VSIPDFFileStream(this, startA, limitedA, lengthA, std::move(dictA)); diff -Nru gdal-2.4.0+dfsg/frmts/pdf/pdfio.h gdal-2.4.2+dfsg/frmts/pdf/pdfio.h --- gdal-2.4.0+dfsg/frmts/pdf/pdfio.h 2018-12-14 21:37:15.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pdf/pdfio.h 2019-06-28 11:12:29.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: pdfio.h 5a215e5c6b75f6d1d51dc4dea40c33d9e0e41dcd 2018-11-28 11:59:15 +0100 Even Rouault $ + * $Id: pdfio.h 783addc36d7da7a3f0c15fd46dde117e0ec0bb87 2019-03-26 12:43:59 +0100 Even Rouault $ * * Project: PDF driver * Purpose: GDALDataset driver for PDF dataset. @@ -38,34 +38,27 @@ #define BUFFER_SIZE 1024 -#ifdef POPPLER_0_23_OR_LATER #define getPos_ret_type Goffset #define getStart_ret_type Goffset #define makeSubStream_offset_type Goffset #define setPos_offset_type Goffset #define moveStart_delta_type Goffset -#else -#define getPos_ret_type int -#define getStart_ret_type Guint -#define makeSubStream_offset_type Guint -#define setPos_offset_type Guint -#define moveStart_delta_type int -#endif -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 #define makeSubStream_object_type Object&& #else #define makeSubStream_object_type Object* #endif // Detect Poppler 0.71 that no longer defines GBool -#ifdef POPPLER_0_69_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 69 #ifndef initObj -#define POPPLER_0_71_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 71 #define GBool bool #define gFalse false #endif #endif +#endif class VSIPDFFileStream final: public BaseStream { @@ -78,9 +71,7 @@ makeSubStream_object_type dictA); virtual ~VSIPDFFileStream(); -#ifdef POPPLER_0_23_OR_LATER virtual BaseStream* copy() override; -#endif virtual Stream * makeSubStream(makeSubStream_offset_type startA, GBool limitedA, makeSubStream_offset_type lengthA, makeSubStream_object_type dictA) override; @@ -102,18 +93,8 @@ virtual void close() override; private: -#ifdef POPPLER_BASE_STREAM_HAS_TWO_ARGS - /* getChars/hasGetChars added in poppler 0.15.0 - * POPPLER_BASE_STREAM_HAS_TWO_ARGS true from poppler 0.16, - * This test will be wrong for poppler 0.15 or 0.16, - * but will still compile correctly. - */ virtual GBool hasGetChars() override; virtual int getChars(int nChars, Guchar *buffer) override; -#else - virtual GBool hasGetChars() ; - virtual int getChars(int nChars, Guchar *buffer) ; -#endif VSIPDFFileStream *poParent; GooString *poFilename; diff -Nru gdal-2.4.0+dfsg/frmts/pdf/pdfobject.cpp gdal-2.4.2+dfsg/frmts/pdf/pdfobject.cpp --- gdal-2.4.0+dfsg/frmts/pdf/pdfobject.cpp 2018-12-14 21:37:15.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pdf/pdfobject.cpp 2019-06-28 11:12:29.000000000 +0000 @@ -38,7 +38,7 @@ #include #include "pdfobject.h" -CPL_CVSID("$Id: pdfobject.cpp 74cc8443a9ddecb695afa6135a2055bf3e377039 2018-05-11 15:50:43 +0200 Even Rouault $") +CPL_CVSID("$Id: pdfobject.cpp ae283428622e4dbef48ba63b10156644cf894681 2019-04-18 11:45:51 +0200 Even Rouault $") /************************************************************************/ /* ROUND_TO_INT_IF_CLOSE() */ @@ -971,7 +971,7 @@ GDALPDFObjectPoppler::~GDALPDFObjectPoppler() { -#ifndef POPPLER_0_58_OR_LATER +#if !(POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58) m_po->free(); #endif if (m_bDestroy) @@ -1055,14 +1055,19 @@ { if (GetType() == PDFObjectType_String) { -#ifdef POPPLER_0_58_OR_LATER +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 // At least available since poppler 0.41 const GooString* gooString = m_po->getString(); #else GooString* gooString = m_po->getString(); #endif +#if (POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 72) + return (osStr = GDALPDFGetUTF8StringFromBytes(reinterpret_cast(gooString->c_str()), + static_cast(gooString->getLength()))); +#else return (osStr = GDALPDFGetUTF8StringFromBytes(reinterpret_cast(gooString->getCString()), static_cast(gooString->getLength()))); +#endif } else return (osStr = ""); @@ -1189,8 +1194,8 @@ if (oIter != m_map.end()) return oIter->second; -#ifdef POPPLER_0_58_OR_LATER - Object o = m_poDict->lookupNF(((char*)pszKey)); +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 + auto&& o(m_poDict->lookupNF(((char*)pszKey))); if (!o.isNull()) { int nRefNum = 0; @@ -1199,7 +1204,7 @@ { nRefNum = o.getRefNum(); nRefGen = o.getRefGen(); - Object o2 = m_poDict->lookup((char*)pszKey); + Object o2(m_poDict->lookup((char*)pszKey)); if( !o2.isNull() ) { GDALPDFObjectPoppler* poObj = new GDALPDFObjectPoppler(new Object(std::move(o2)), TRUE); @@ -1210,7 +1215,7 @@ } else { - GDALPDFObjectPoppler* poObj = new GDALPDFObjectPoppler(new Object(std::move(o)), TRUE); + GDALPDFObjectPoppler* poObj = new GDALPDFObjectPoppler(new Object(std::move(o.copy())), TRUE); poObj->SetRefNumAndGen(nRefNum, nRefGen); m_map[pszKey] = poObj; return poObj; @@ -1323,8 +1328,8 @@ if (m_v[nIndex] != nullptr) return m_v[nIndex]; -#ifdef POPPLER_0_58_OR_LATER - Object o = m_poArray->getNF(nIndex); +#if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 + auto&& o(m_poArray->getNF(nIndex)); if( !o.isNull() ) { int nRefNum = 0; @@ -1333,7 +1338,7 @@ { nRefNum = o.getRefNum(); nRefGen = o.getRefGen(); - Object o2 = m_poArray->get(nIndex); + Object o2(m_poArray->get(nIndex)); if( !o2.isNull() ) { GDALPDFObjectPoppler* poObj = new GDALPDFObjectPoppler(new Object(std::move(o2)), TRUE); @@ -1344,7 +1349,7 @@ } else { - GDALPDFObjectPoppler* poObj = new GDALPDFObjectPoppler(new Object(std::move(o)), TRUE); + GDALPDFObjectPoppler* poObj = new GDALPDFObjectPoppler(new Object(std::move(o.copy())), TRUE); poObj->SetRefNumAndGen(nRefNum, nRefGen); m_v[nIndex] = poObj; return poObj; @@ -1411,8 +1416,6 @@ char* GDALPDFStreamPoppler::GetBytes() { - /* fillGooString() available in poppler >= 0.16.0 */ -#ifdef POPPLER_BASE_STREAM_HAS_TWO_ARGS GooString* gstr = new GooString(); m_poStream->fillGooString(gstr); @@ -1422,7 +1425,12 @@ char* pszContent = (char*) VSIMalloc(m_nLength + 1); if (pszContent) { - memcpy(pszContent, gstr->getCString(), m_nLength); +#if (POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 72) + const char* srcStr = gstr->c_str(); +#else + const char* srcStr = gstr->getCString(); +#endif + memcpy(pszContent, srcStr, m_nLength); pszContent[m_nLength] = '\0'; } delete gstr; @@ -1433,41 +1441,6 @@ delete gstr; return nullptr; } -#else - int i; - int nLengthAlloc = 0; - char* pszContent = nullptr; - if( m_nLength >= 0 ) - { - pszContent = (char*) VSIMalloc(m_nLength + 1); - if (!pszContent) - return nullptr; - nLengthAlloc = m_nLength; - } - m_poStream->reset(); - for(i = 0; ; ++i ) - { - int nVal = m_poStream->getChar(); - if (nVal == EOF) - break; - if( i >= nLengthAlloc ) - { - nLengthAlloc = 32 + nLengthAlloc + nLengthAlloc / 3; - char* pszContentNew = (char*) VSIRealloc(pszContent, nLengthAlloc + 1); - if( pszContentNew == nullptr ) - { - CPLFree(pszContent); - m_nLength = 0; - return nullptr; - } - pszContent = pszContentNew; - } - pszContent[i] = (GByte)nVal; - } - m_nLength = i; - pszContent[i] = '\0'; - return pszContent; -#endif } #endif // HAVE_POPPLER @@ -2062,6 +2035,9 @@ case PDFOBJ_ARRAY: return PDFObjectType_Array; case PDFOBJ_DICTIONARY: return PDFObjectType_Dictionary; case PDFOBJ_STREAM: return PDFObjectType_Dictionary; + case PDFOBJ_REFERENCE: + // unresolved reference + return PDFObjectType_Unknown; default: CPLAssert(false); return PDFObjectType_Unknown; diff -Nru gdal-2.4.0+dfsg/frmts/pdf/pdfsdk_headers.h gdal-2.4.2+dfsg/frmts/pdf/pdfsdk_headers.h --- gdal-2.4.0+dfsg/frmts/pdf/pdfsdk_headers.h 2018-12-14 21:37:15.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pdf/pdfsdk_headers.h 2019-06-28 11:12:29.000000000 +0000 @@ -50,8 +50,15 @@ #pragma warning( disable : 4244 ) /* conversion from 'const int' to 'Guchar', possible loss of data */ #endif +#if !(POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 73) #include +#else +typedef unsigned char Guchar; +#endif + +#if !(POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 76) #include +#endif /* begin of poppler xpdf includes */ #include diff -Nru gdal-2.4.0+dfsg/frmts/pdf/pdfwritabledataset.cpp gdal-2.4.2+dfsg/frmts/pdf/pdfwritabledataset.cpp --- gdal-2.4.0+dfsg/frmts/pdf/pdfwritabledataset.cpp 2018-12-14 21:37:15.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pdf/pdfwritabledataset.cpp 2019-06-28 11:12:29.000000000 +0000 @@ -30,7 +30,7 @@ #include "pdfcreatecopy.h" #include "memdataset.h" -CPL_CVSID("$Id: pdfwritabledataset.cpp 22f8ae3bf7bc3cccd970992655c63fc5254d3206 2018-04-08 20:13:05 +0200 Even Rouault $") +CPL_CVSID("$Id: pdfwritabledataset.cpp afbb4e33ff21a13912f2e04fcf837da9f49a2aa9 2019-02-26 15:49:49 +0100 Even Rouault $") /************************************************************************/ /* PDFWritableVectorDataset() */ @@ -268,12 +268,24 @@ if (dfRatio < 1) { nWidth = 1024; - nHeight = static_cast(nWidth * dfRatio); + const double dfHeight = nWidth * dfRatio; + if( dfHeight < 1 || dfHeight > INT_MAX || CPLIsNan(dfHeight) ) + { + CPLError(CE_Failure, CPLE_AppDefined, "Invalid image dimensions"); + return OGRERR_FAILURE; + } + nHeight = static_cast(dfHeight); } else { nHeight = 1024; - nWidth = static_cast(nHeight / dfRatio); + const double dfWidth = nHeight / dfRatio; + if( dfWidth < 1 || dfWidth > INT_MAX || CPLIsNan(dfWidth) ) + { + CPLError(CE_Failure, CPLE_AppDefined, "Invalid image dimensions"); + return OGRERR_FAILURE; + } + nWidth = static_cast(dfWidth); } GDALDataset* poSrcDS = MEMDataset::Create( "MEM:::", nWidth, nHeight, 0, GDT_Byte, nullptr ); diff -Nru gdal-2.4.0+dfsg/frmts/pds/isis3dataset.cpp gdal-2.4.2+dfsg/frmts/pds/isis3dataset.cpp --- gdal-2.4.0+dfsg/frmts/pds/isis3dataset.cpp 2018-12-14 21:37:15.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pds/isis3dataset.cpp 2019-06-28 11:14:30.000000000 +0000 @@ -107,7 +107,7 @@ static const char* const pszHISTORY_STARTBYTE_PLACEHOLDER = "!*^HISTORY_STARTBYTE^*!"; -CPL_CVSID("$Id: isis3dataset.cpp b2723bb9ee29fb36de5c3afec9e9a6b757ef743c 2018-05-10 21:21:26 +0200 Even Rouault $") +CPL_CVSID("$Id: isis3dataset.cpp c22948b973f57fb9c0503ba18991ca5b07dcaf1e 2019-05-06 12:04:39 +0200 Even Rouault $") /************************************************************************/ /* ==================================================================== */ @@ -3581,7 +3581,15 @@ { CPLString osVal = oItem.ToString(); const char* pszVal = osVal.c_str(); - if( nFirstPos < WIDTH && nCurPos + strlen(pszVal) > WIDTH ) + if( pszVal[0] == '\0' || + strchr(pszVal, ' ') || strstr(pszVal, "\\n") || + strstr(pszVal, "\\r") ) + { + osVal.replaceAll("\\n", "\n"); + osVal.replaceAll("\\r", "\r"); + VSIFPrintfL(fp, "\"%s\"", osVal.c_str()); + } + else if( nFirstPos < WIDTH && nCurPos + strlen(pszVal) > WIDTH ) { if( idx > 0 ) { diff -Nru gdal-2.4.0+dfsg/frmts/pds/nasakeywordhandler.cpp gdal-2.4.2+dfsg/frmts/pds/nasakeywordhandler.cpp --- gdal-2.4.0+dfsg/frmts/pds/nasakeywordhandler.cpp 2018-12-14 21:37:15.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pds/nasakeywordhandler.cpp 2019-06-28 11:14:30.000000000 +0000 @@ -56,7 +56,7 @@ #include "ogrgeojsonreader.h" #include -CPL_CVSID("$Id: nasakeywordhandler.cpp 55901e50fd8583acecc3d37c9cc2870043fc8bdb 2018-01-11 09:11:21Z Dmitry Baryshnikov $") +CPL_CVSID("$Id: nasakeywordhandler.cpp c22948b973f57fb9c0503ba18991ca5b07dcaf1e 2019-05-06 12:04:39 +0200 Even Rouault $") /************************************************************************/ /* ==================================================================== */ @@ -244,6 +244,9 @@ std::vector oStackArrayBeginChar; CPLString osWord; + oStackArrayBeginChar.push_back(*pszHeaderNext); + osValue += *pszHeaderNext; + pszHeaderNext++; while( ReadWord( osWord, m_bStripSurroundingQuotes, true, &bIsString ) ) diff -Nru gdal-2.4.0+dfsg/frmts/pds/pdsdataset.cpp gdal-2.4.2+dfsg/frmts/pds/pdsdataset.cpp --- gdal-2.4.0+dfsg/frmts/pds/pdsdataset.cpp 2018-12-14 21:37:15.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/pds/pdsdataset.cpp 2019-06-28 11:14:30.000000000 +0000 @@ -48,7 +48,7 @@ #include "rawdataset.h" #include "cpl_safemaths.hpp" -CPL_CVSID("$Id: pdsdataset.cpp 7cbdcf0283bd949dc4a9525b9043238b568ac3bd 2018-10-06 10:41:51 +0200 Even Rouault $") +CPL_CVSID("$Id: pdsdataset.cpp 4fa6baa441510e5e0318a6422b34110b1aa5ca18 2019-04-18 19:45:56 +0200 Even Rouault $") enum PDSLayout { @@ -727,16 +727,18 @@ /* -------------------------------------------------------------------- */ /* Checks to see if this is raw PDS image not compressed image */ /* so ENCODING_TYPE either does not exist or it equals "N/A". */ + /* or "DCT_DECOMPRESSED". */ /* Compressed types will not be supported in this routine */ /* -------------------------------------------------------------------- */ CPLString osEncodingType = GetKeyword(osPrefix+"IMAGE.ENCODING_TYPE","N/A"); CleanString(osEncodingType); - if ( !EQUAL(osEncodingType.c_str(),"N/A") ) + if ( !EQUAL(osEncodingType,"N/A") && + !EQUAL(osEncodingType,"DCT_DECOMPRESSED") ) { CPLError( CE_Failure, CPLE_OpenFailed, "*** PDS image file has an ENCODING_TYPE parameter:\n" - "*** gdal pds driver does not support compressed image types\n" + "*** GDAL PDS driver does not support compressed image types\n" "found: (%s)\n\n", osEncodingType.c_str() ); return FALSE; } @@ -1068,7 +1070,7 @@ { nPixelOffset = nItemSize; nBandOffset = (CPLSM(nItemSize) * CPLSM(nCols)).v(); - nLineOffset = (CPLSM(nLineOffset) + CPLSM(nBandOffset) * CPLSM(nCols)).v(); + nLineOffset = (CPLSM(nLineOffset) + CPLSM(nBandOffset) * CPLSM(l_nBands)).v(); } } catch( const CPLSafeIntOverflow& ) diff -Nru gdal-2.4.0+dfsg/frmts/raw/envidataset.cpp gdal-2.4.2+dfsg/frmts/raw/envidataset.cpp --- gdal-2.4.0+dfsg/frmts/raw/envidataset.cpp 2018-12-14 21:37:23.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/raw/envidataset.cpp 2019-06-28 11:12:26.000000000 +0000 @@ -55,7 +55,7 @@ #include "ogr_spatialref.h" #include "ogr_srs_api.h" -CPL_CVSID("$Id: envidataset.cpp 38bc22bec5ab42c444f912c9719327512ba52b19 2018-06-21 20:46:53 +0200 Even Rouault $") +CPL_CVSID("$Id: envidataset.cpp 825662d03251faac29c5c683c74694ba56124e90 2019-06-28 12:04:09 +0200 Even Rouault $") // TODO(schwehr): This really should be defined in port/somewhere.h. constexpr double kdfDegToRad = M_PI / 180.0; @@ -305,6 +305,10 @@ CPLError(CE_Failure, CPLE_FileIO, "I/O error"); } } + if( !m_asGCPs.empty() ) + { + GDALDeinitGCPs(static_cast(m_asGCPs.size()), m_asGCPs.data()); + } CPLFree(pszProjection); CPLFree(pszHDRFilename); } @@ -1106,7 +1110,7 @@ // Write out gcps into the envi header // returns 0 if the gcps are not present. - const int iNum = GetGCPCount(); + const int iNum = std::min(GetGCPCount(), 4); if (iNum == 0) return false; @@ -1120,9 +1124,11 @@ bool bRet = VSIFPrintfL(fp, "geo points = {\n") >= 0; for( int iR = 0; iR < iNum; iR++ ) { + // Add 1 to pixel and line for ENVI convention bRet &= VSIFPrintfL( fp, " %#0.4f, %#0.4f, %#0.8f, %#0.8f", - pGcpStructs[iR].dfGCPPixel, pGcpStructs[iR].dfGCPLine, + 1 + pGcpStructs[iR].dfGCPPixel, + 1 + pGcpStructs[iR].dfGCPLine, pGcpStructs[iR].dfGCPY, pGcpStructs[iR].dfGCPX) >= 0; if( iR < iNum - 1 ) bRet &= VSIFPrintfL(fp, ",\n") >= 0; @@ -1749,6 +1755,65 @@ CSLDestroy(papszFields); } +/************************************************************************/ +/* GetGCPCount() */ +/************************************************************************/ + +int ENVIDataset::GetGCPCount() +{ + int nGCPCount = RawDataset::GetGCPCount(); + if( nGCPCount ) + return nGCPCount; + return static_cast(m_asGCPs.size()); +} + +/************************************************************************/ +/* GetGCPs() */ +/************************************************************************/ + +const GDAL_GCP *ENVIDataset::GetGCPs() +{ + int nGCPCount = RawDataset::GetGCPCount(); + if( nGCPCount ) + return RawDataset::GetGCPs(); + if( !m_asGCPs.empty() ) + return m_asGCPs.data(); + return nullptr; +} + +/************************************************************************/ +/* ProcessGeoPoints() */ +/* */ +/* Extract GCPs */ +/************************************************************************/ + +void ENVIDataset::ProcessGeoPoints( const char *pszGeoPoints ) +{ + char **papszFields = SplitList(pszGeoPoints); + const int nCount = CSLCount(papszFields); + + if( (nCount % 4) != 0 ) + { + CSLDestroy(papszFields); + return; + } + m_asGCPs.resize(nCount / 4); + if( !m_asGCPs.empty() ) + { + GDALInitGCPs(static_cast(m_asGCPs.size()), m_asGCPs.data()); + } + for( int i = 0; i < static_cast(m_asGCPs.size()); i++ ) + { + // Subtract 1 to pixel and line for ENVI convention + m_asGCPs[i].dfGCPPixel = CPLAtof( papszFields[i * 4 + 0] ) - 1; + m_asGCPs[i].dfGCPLine = CPLAtof( papszFields[i * 4 + 1] ) - 1; + m_asGCPs[i].dfGCPY = CPLAtof( papszFields[i * 4 + 2] ); + m_asGCPs[i].dfGCPX = CPLAtof( papszFields[i * 4 + 3] ); + m_asGCPs[i].dfGCPZ = 0; + } + CSLDestroy(papszFields); +} + void ENVIDataset::ProcessStatsFile() { osStaFilename = CPLResetExtension(pszHDRFilename, "sta"); @@ -2495,7 +2560,7 @@ pszMapInfo)); } - // Look for RPC mapinfo. + // Look for RPC. const char* pszRPCInfo = poDS->m_aosHeader["rpc_info"]; if( !poDS->bFoundMapinfo && pszRPCInfo != nullptr ) { @@ -2503,6 +2568,13 @@ poDS->nRasterXSize, poDS->nRasterYSize); } + // Look for geo_points / GCP + const char* pszGeoPoints = poDS->m_aosHeader["geo_points"]; + if( !poDS->bFoundMapinfo && pszGeoPoints != nullptr ) + { + poDS->ProcessGeoPoints(pszGeoPoints); + } + // Initialize any PAM information. poDS->SetDescription(poOpenInfo->pszFilename); poDS->TryLoadXML(); diff -Nru gdal-2.4.0+dfsg/frmts/raw/envidataset.h gdal-2.4.2+dfsg/frmts/raw/envidataset.h --- gdal-2.4.0+dfsg/frmts/raw/envidataset.h 2018-12-14 21:37:23.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/raw/envidataset.h 2019-06-28 11:12:25.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: envidataset.h 38bc22bec5ab42c444f912c9719327512ba52b19 2018-06-21 20:46:53 +0200 Even Rouault $ + * $Id: envidataset.h 98ae646fbddccb3c59804c902f687dea6f0b628b 2019-05-10 20:50:18 +0200 Even Rouault $ * * Project: ENVI .hdr Driver * Purpose: Implementation of ENVI .hdr labelled raw raster support. @@ -80,9 +80,12 @@ CPLString osStaFilename{}; + std::vector m_asGCPs{}; + bool ReadHeader( VSILFILE * ); bool ProcessMapinfo( const char * ); void ProcessRPCinfo( const char *, int, int); + void ProcessGeoPoints( const char* ); void ProcessStatsFile(); static int byteSwapInt(int); static float byteSwapFloat(float); @@ -125,6 +128,9 @@ CPLErr SetGCPs( int nGCPCount, const GDAL_GCP *pasGCPList, const char *pszGCPProjection ) override; + int GetGCPCount() override; + const GDAL_GCP *GetGCPs() override; + static GDALDataset *Open( GDALOpenInfo * ); static GDALDataset *Open( GDALOpenInfo *, bool bFileSizeCheck ); static GDALDataset *Create( const char *pszFilename, diff -Nru gdal-2.4.0+dfsg/frmts/raw/rawdataset.cpp gdal-2.4.2+dfsg/frmts/raw/rawdataset.cpp --- gdal-2.4.0+dfsg/frmts/raw/rawdataset.cpp 2018-12-14 21:37:24.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/raw/rawdataset.cpp 2019-06-28 11:12:25.000000000 +0000 @@ -50,7 +50,7 @@ #include "gdal.h" #include "gdal_priv.h" -CPL_CVSID("$Id: rawdataset.cpp 883cd37cbba492994b0d67221d9cda65d17473d3 2018-09-13 16:41:03 +0200 Even Rouault $") +CPL_CVSID("$Id: rawdataset.cpp 927306467dc1afafa03313040c7c7e4fe22b20c1 2019-04-17 21:51:00 +0200 Even Rouault $") /************************************************************************/ /* RawRasterBand() */ @@ -536,11 +536,21 @@ /* CanUseDirectIO() */ /************************************************************************/ +int RawRasterBand::CanUseDirectIO(int nXOff, + int nYOff, + int nXSize, + int nYSize, + GDALDataType eBufType) +{ + return CanUseDirectIO(nXOff, nYOff, nXSize, nYSize, eBufType, nullptr); +} + int RawRasterBand::CanUseDirectIO(int /* nXOff */, int nYOff, int nXSize, int nYSize, - GDALDataType /* eBufType*/) + GDALDataType /* eBufType*/, + GDALRasterIOExtraArg* psExtraArg) { // Use direct IO without caching if: @@ -553,7 +563,8 @@ // width of the requested chunk is less than 40% of the whole scanline and // no significant number of requested scanlines are already in the cache. - if( nPixelOffset < 0 ) + if( nPixelOffset < 0 || + (psExtraArg != nullptr && psExtraArg->eResampleAlg != GRIORA_NearestNeighbour) ) { return FALSE; } @@ -595,7 +606,7 @@ #endif const int nBufDataSize = GDALGetDataTypeSizeBytes(eBufType); - if( !CanUseDirectIO(nXOff, nYOff, nXSize, nYSize, eBufType) ) + if( !CanUseDirectIO(nXOff, nYOff, nXSize, nYSize, eBufType, psExtraArg) ) { return GDALRasterBand::IRasterIO(eRWFlag, nXOff, nYOff, nXSize, nYSize, @@ -1127,7 +1138,7 @@ GetRasterBand(panBandMap[iBandIndex])); if( poBand == nullptr || !poBand->CanUseDirectIO(nXOff, nYOff, - nXSize, nYSize, eBufType) ) + nXSize, nYSize, eBufType, psExtraArg) ) { break; } diff -Nru gdal-2.4.0+dfsg/frmts/raw/rawdataset.h gdal-2.4.2+dfsg/frmts/raw/rawdataset.h --- gdal-2.4.0+dfsg/frmts/raw/rawdataset.h 2018-12-14 21:37:24.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/raw/rawdataset.h 2019-06-28 11:12:25.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: rawdataset.h b2723bb9ee29fb36de5c3afec9e9a6b757ef743c 2018-05-10 21:21:26 +0200 Even Rouault $ + * $Id: rawdataset.h 927306467dc1afafa03313040c7c7e4fe22b20c1 2019-04-17 21:51:00 +0200 Even Rouault $ * * Project: Raw Translator * Purpose: Implementation of RawDataset class. Intended to be subclassed @@ -117,6 +117,9 @@ int CanUseDirectIO(int nXOff, int nYOff, int nXSize, int nYSize, GDALDataType eBufType); + int CanUseDirectIO(int nXOff, int nYOff, int nXSize, int nYSize, + GDALDataType eBufType, + GDALRasterIOExtraArg* psExtraArg); public: enum class OwnFP diff -Nru gdal-2.4.0+dfsg/frmts/rs2/rs2dataset.cpp gdal-2.4.2+dfsg/frmts/rs2/rs2dataset.cpp --- gdal-2.4.0+dfsg/frmts/rs2/rs2dataset.cpp 2018-12-14 21:37:24.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/rs2/rs2dataset.cpp 2019-06-28 11:13:02.000000000 +0000 @@ -32,7 +32,7 @@ #include "gdal_pam.h" #include "ogr_spatialref.h" -CPL_CVSID("$Id: rs2dataset.cpp 61b6d6e1bea68b47c287ecc7742ccbc00d15cd75 2018-06-20 10:38:23 +0200 Even Rouault $") +CPL_CVSID("$Id: rs2dataset.cpp af7aeb0d4b98257c72c0db4c1bdb1f5880b80af8 2019-06-24 16:49:43 +0300 an-ivanov $") typedef enum eCalibration_t { Sigma0 = 0, @@ -1307,9 +1307,9 @@ psGCP->pszId = CPLStrdup( szID ); psGCP->pszInfo = CPLStrdup(""); psGCP->dfGCPPixel = - CPLAtof(CPLGetXMLValue(psNode,"imageCoordinate.pixel","0")); + CPLAtof(CPLGetXMLValue(psNode,"imageCoordinate.pixel","0")) + 0.5; psGCP->dfGCPLine = - CPLAtof(CPLGetXMLValue(psNode,"imageCoordinate.line","0")); + CPLAtof(CPLGetXMLValue(psNode,"imageCoordinate.line","0")) + 0.5; psGCP->dfGCPX = CPLAtof(CPLGetXMLValue(psNode,"geodeticCoordinate.longitude","")); psGCP->dfGCPY = diff -Nru gdal-2.4.0+dfsg/frmts/vrt/vrtderivedrasterband.cpp gdal-2.4.2+dfsg/frmts/vrt/vrtderivedrasterband.cpp --- gdal-2.4.0+dfsg/frmts/vrt/vrtderivedrasterband.cpp 2018-12-14 21:37:28.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/vrt/vrtderivedrasterband.cpp 2019-06-28 11:12:55.000000000 +0000 @@ -49,7 +49,7 @@ /*! @cond Doxygen_Suppress */ -CPL_CVSID("$Id: vrtderivedrasterband.cpp 6ef13199b493973da285decbfcd5e2a763954b97 2018-06-07 05:46:42 -0400 luzpaz $") +CPL_CVSID("$Id: vrtderivedrasterband.cpp b2155cc20097aa9ab786396ed9bfe45686193e93 2019-06-20 10:43:54 +0200 Even Rouault $") // #define GDAL_VRT_DISABLE_PYTHON // #define PYTHONSO_DEFAULT "libpython2.7.so" @@ -301,15 +301,32 @@ } #endif - // Then try to find the libpython that corresponds to the python binary - // in the PATH - if( libHandle == nullptr ) - { #if defined(__MACH__) && defined(__APPLE__) #define SO_EXT "dylib" #else +#define IS_SO_EXT #define SO_EXT "so" #endif + + const auto tryDlopen = [](CPLString osPythonSO) + { + CPLDebug("VRT", "Trying %s", osPythonSO.c_str()); + auto l_libHandle = dlopen(osPythonSO.c_str(), RTLD_NOW | RTLD_GLOBAL); +#ifdef IS_SO_EXT + if( l_libHandle == nullptr ) + { + osPythonSO += ".1.0"; + CPLDebug("VRT", "Trying %s", osPythonSO.c_str()); + l_libHandle = dlopen(osPythonSO.c_str(), RTLD_NOW | RTLD_GLOBAL); + } +#endif + return l_libHandle; + }; + + // Then try to find the libpython that corresponds to the python binary + // in the PATH + if( libHandle == nullptr ) + { CPLString osVersion; char* pszPath = getenv("PATH"); if( pszPath != nullptr @@ -417,19 +434,14 @@ if( !osVersion.empty() ) { - CPLString osPythonSO("libpython"); - osPythonSO += osVersion + "." SO_EXT; - CPLDebug("VRT", "Trying %s", osPythonSO.c_str()); - libHandle = dlopen(osPythonSO, RTLD_NOW | RTLD_GLOBAL); + libHandle = tryDlopen("libpython" + osVersion + "." SO_EXT); if( libHandle != nullptr ) { CPLDebug("VRT", "... success"); } else if( osVersion[0] == '3' ) { - osPythonSO = "libpython" + osVersion + "m." SO_EXT; - CPLDebug("VRT", "Trying %s", osPythonSO.c_str()); - libHandle = dlopen(osPythonSO, RTLD_NOW | RTLD_GLOBAL); + libHandle = tryDlopen("libpython" + osVersion + "m." SO_EXT); if( libHandle != nullptr ) { CPLDebug("VRT", "... success"); @@ -439,7 +451,7 @@ } // Otherwise probe a few known objects. - // Note: update vrt_tutorial.dox if change + // Note: update doc/source/drivers/raster/vrt.rst if change if( libHandle == nullptr ) { const char* const apszPythonSO[] = { "libpython2.7." SO_EXT, @@ -452,8 +464,7 @@ for( size_t i = 0; libHandle == nullptr && i < CPL_ARRAYSIZE(apszPythonSO); ++i ) { - CPLDebug("VRT", "Trying %s", apszPythonSO[i]); - libHandle = dlopen(apszPythonSO[i], RTLD_NOW | RTLD_GLOBAL); + libHandle = tryDlopen(apszPythonSO[i]); if( libHandle != nullptr ) CPLDebug("VRT", "... success"); } diff -Nru gdal-2.4.0+dfsg/frmts/wms/wmsdriver.cpp gdal-2.4.2+dfsg/frmts/wms/wmsdriver.cpp --- gdal-2.4.0+dfsg/frmts/wms/wmsdriver.cpp 2018-12-14 21:37:40.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/wms/wmsdriver.cpp 2019-06-28 11:13:42.000000000 +0000 @@ -42,10 +42,12 @@ #include "minidriver_iip.h" #include "minidriver_mrf.h" +#include "cpl_json.h" + #include #include -CPL_CVSID("$Id: wmsdriver.cpp 288a073a0fdb59d2f7946ca169a6d75e71000976 2018-03-27 18:23:16 +0200 Even Rouault $") +CPL_CVSID("$Id: wmsdriver.cpp 7cb6ca68ff0d7d32927cb94d09495c0d9700276e 2019-04-04 19:49:15Z Even Rouault $") // // A static map holding seen server GetTileService responses, per process @@ -470,146 +472,61 @@ } /************************************************************************/ -/* GetJSonValue() */ -/************************************************************************/ - -static const char* GetJSonValue(const char* pszLine, const char* pszKey) -{ - const char* pszJSonKey = CPLSPrintf("\"%s\" : ", pszKey); - const char* pszPtr; - if( (pszPtr = strstr(pszLine, pszJSonKey)) != nullptr ) - return pszPtr + strlen(pszJSonKey); - pszJSonKey = CPLSPrintf("\"%s\": ", pszKey); - if( (pszPtr = strstr(pszLine, pszJSonKey)) != nullptr ) - return pszPtr + strlen(pszJSonKey); - return nullptr; -} - -/************************************************************************/ /* GDALWMSDatasetGetConfigFromArcGISJSON() */ /************************************************************************/ static CPLXMLNode* GDALWMSDatasetGetConfigFromArcGISJSON(const char* pszURL, const char* pszContent) { - /* TODO : use JSONC library to parse. But we don't really need it */ - CPLString osTmpFilename(CPLSPrintf("/vsimem/WMSArcGISJSON%p", pszURL)); - VSILFILE* fp = VSIFileFromMemBuffer( osTmpFilename, - (GByte*)pszContent, - strlen(pszContent), - FALSE); - VSIUnlink(osTmpFilename); - - const char* pszLine; - int nTileWidth = -1; - int nTileHeight = -1; - int nWKID = -1; - int nLatestWKID = -1; - CPLString osWKT; - double dfMinX = 0.0; - double dfMaxY = 0.0; - int bHasMinX = FALSE; - int bHasMaxY = FALSE; - int nExpectedLevel = 0; + CPLJSONDocument oDoc; + if( !oDoc.LoadMemory(std::string(pszContent)) ) + return nullptr; + auto oRoot(oDoc.GetRoot()); + auto oTileInfo(oRoot["tileInfo"]); + if( !oTileInfo.IsValid() ) + { + CPLDebug("WMS", "Did not get tileInfo"); + return nullptr; + } + int nTileWidth = oTileInfo.GetInteger("cols", -1); + int nTileHeight = oTileInfo.GetInteger("rows", -1); + + auto oSpatialReference(oTileInfo["spatialReference"]); + if( !oSpatialReference.IsValid() ) + { + CPLDebug("WMS", "Did not get spatialReference"); + return nullptr; + } + int nWKID = oSpatialReference.GetInteger("wkid", -1); + int nLatestWKID = oSpatialReference.GetInteger("latestWkid", -1); + CPLString osWKT( oSpatialReference.GetString("wkt")); + + auto oOrigin(oTileInfo["origin"]); + if( !oOrigin.IsValid() ) + { + CPLDebug("WMS", "Did not get origin"); + return nullptr; + } + double dfMinX = oOrigin.GetDouble("x", std::numeric_limits::infinity()); + double dfMaxY = oOrigin.GetDouble("y", std::numeric_limits::infinity()); + + auto oLods(oTileInfo["lods"].ToArray()); + if( !oLods.IsValid() ) + { + CPLDebug("WMS", "Did not get lods"); + return nullptr; + } double dfBaseResolution = 0.0; - while((pszLine = CPLReadLine2L(fp, 4096, nullptr)) != nullptr) + for(int i = 0; i < oLods.Size(); i++ ) { - const char* pszVal; - if ((pszVal = GetJSonValue(pszLine, "rows")) != nullptr) - nTileHeight = atoi(pszVal); - else if ((pszVal = GetJSonValue(pszLine, "cols")) != nullptr) - nTileWidth = atoi(pszVal); - else if ((pszVal = GetJSonValue(pszLine, "wkid")) != nullptr) - { - int nVal = atoi(pszVal); - if (nWKID < 0) - nWKID = nVal; - else if (nWKID != nVal) - { - CPLDebug("WMS", "Inconsistent WKID values : %d, %d", nVal, nWKID); - VSIFCloseL(fp); - return nullptr; - } - } - else if ((pszVal = GetJSonValue(pszLine, "latestWkid")) != nullptr) - { - int nVal = atoi(pszVal); - if (nLatestWKID < 0) - nLatestWKID = nVal; - else if (nLatestWKID != nVal) - { - CPLDebug("WMS", "Inconsistent latestWkid values : %d, %d", nVal, nLatestWKID); - VSIFCloseL(fp); - return nullptr; - } - } - else if ((pszVal = GetJSonValue(pszLine, "wkt")) != nullptr) - { - osWKT = pszVal; - size_t nPos; - // FIXME: we should really use a proper JSon parser !!! - if( !osWKT.empty() && osWKT[0] == '"' && - (nPos = osWKT.find("\"}")) != std::string::npos ) - { - osWKT = osWKT.substr(1, nPos - 1); - osWKT.replaceAll("\\\"", "\""); - } - else if( osWKT.size() > 2 && osWKT[0] == '"' && osWKT.back() == '"' ) - { - osWKT = osWKT.substr(1, osWKT.size() - 2); - osWKT.replaceAll("\\\"", "\""); - } - else - { - osWKT.clear(); - } - } - else if ((pszVal = GetJSonValue(pszLine, "x")) != nullptr) - { - bHasMinX = TRUE; - dfMinX = CPLAtofM(pszVal); - } - else if ((pszVal = GetJSonValue(pszLine, "y")) != nullptr) + if( oLods[i].GetInteger("level", -1) == 0 ) { - bHasMaxY = TRUE; - dfMaxY = CPLAtofM(pszVal); - } - else if ((pszVal = GetJSonValue(pszLine, "level")) != nullptr) - { - int nLevel = atoi(pszVal); - if (nLevel != nExpectedLevel) - { - CPLDebug("WMS", "Expected level : %d, got : %d", nExpectedLevel, nLevel); - VSIFCloseL(fp); - return nullptr; - } - - pszVal = GetJSonValue(pszLine, "resolution"); - if( pszVal == nullptr ) - { - pszLine = CPLReadLine2L(fp, 4096, nullptr); - if( pszLine == nullptr ) - break; - pszVal = GetJSonValue(pszLine, "resolution"); - } - if (pszVal != nullptr) - { - double dfResolution = CPLAtofM(pszVal); - if (nLevel == 0) - dfBaseResolution = dfResolution; - } - else - { - CPLDebug("WMS", "Did not get resolution"); - VSIFCloseL(fp); - return nullptr; - } - nExpectedLevel ++; + dfBaseResolution = oLods[i].GetDouble("resolution"); + break; } } - VSIFCloseL(fp); - int nLevelCount = nExpectedLevel - 1; + int nLevelCount = oLods.Size() - 1; if (nLevelCount < 1) { CPLDebug("WMS", "Did not get levels"); @@ -631,12 +548,12 @@ CPLDebug("WMS", "Did not get WKID"); return nullptr; } - if (!bHasMinX) + if (dfMinX == std::numeric_limits::infinity()) { CPLDebug("WMS", "Did not get min x"); return nullptr; } - if (!bHasMaxY) + if (dfMaxY == std::numeric_limits::infinity()) { CPLDebug("WMS", "Did not get max y"); return nullptr; diff -Nru gdal-2.4.0+dfsg/frmts/xpm/xpmdataset.cpp gdal-2.4.2+dfsg/frmts/xpm/xpmdataset.cpp --- gdal-2.4.0+dfsg/frmts/xpm/xpmdataset.cpp 2018-12-14 21:37:40.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/xpm/xpmdataset.cpp 2019-06-28 11:14:17.000000000 +0000 @@ -35,7 +35,7 @@ #include #include -CPL_CVSID("$Id: xpmdataset.cpp a542b2797f15f2ed694cfcee9ff17d86b339dfee 2018-04-02 00:24:03 +0200 Even Rouault $") +CPL_CVSID("$Id: xpmdataset.cpp cc5d84036f5efca50192ec7426a35b9d54bf3712 2019-02-28 13:02:12 +0100 Even Rouault $") static unsigned char *ParseXPM( const char *pszInput, unsigned int nFileSize, @@ -567,7 +567,8 @@ for( int iColor = 0; iColor < nColorCount; iColor++ ) { - if( papszXPMList[iColor+1] == nullptr ) + if( papszXPMList[iColor+1] == nullptr || + papszXPMList[iColor+1][0] == '\0' ) { CPLError( CE_Failure, CPLE_AppDefined, "Missing color definition for %d in XPM header.", diff -Nru gdal-2.4.0+dfsg/frmts/xyz/xyzdataset.cpp gdal-2.4.2+dfsg/frmts/xyz/xyzdataset.cpp --- gdal-2.4.0+dfsg/frmts/xyz/xyzdataset.cpp 2018-12-14 21:37:40.000000000 +0000 +++ gdal-2.4.2+dfsg/frmts/xyz/xyzdataset.cpp 2019-06-28 11:14:30.000000000 +0000 @@ -34,7 +34,7 @@ #include #include -CPL_CVSID("$Id: xyzdataset.cpp b468e2f410c61622eb363d0d847096b1124e97cf 2018-11-19 20:59:38 +0100 Even Rouault $") +CPL_CVSID("$Id: xyzdataset.cpp 7fefb7ee5e6834d26f6fc96f54c2a4312b5bd507 2019-04-24 21:41:42 +0200 Even Rouault $") constexpr double RELATIVE_ERROR = 1e-3; @@ -624,20 +624,21 @@ char** papszTokens = CSLTokenizeString2( osHeaderLine, " ,\t;", CSLT_HONOURSTRINGS ); int nTokens = CSLCount(papszTokens); - for( i = 0; i < nTokens; i++ ) + for( int iToken = 0; iToken < nTokens; iToken++ ) { - if (EQUAL(papszTokens[i], "x") || - STARTS_WITH_CI(papszTokens[i], "lon") || - STARTS_WITH_CI(papszTokens[i], "east")) - nXIndex = i; - else if (EQUAL(papszTokens[i], "y") || - STARTS_WITH_CI(papszTokens[i], "lat") || - STARTS_WITH_CI(papszTokens[i], "north")) - nYIndex = i; - else if (EQUAL(papszTokens[i], "z") || - STARTS_WITH_CI(papszTokens[i], "alt") || - EQUAL(papszTokens[i], "height")) - nZIndex = i; + const char* pszToken = papszTokens[iToken]; + if (EQUAL(pszToken, "x") || + STARTS_WITH_CI(pszToken, "lon") || + STARTS_WITH_CI(pszToken, "east")) + nXIndex = iToken; + else if (EQUAL(pszToken, "y") || + STARTS_WITH_CI(pszToken, "lat") || + STARTS_WITH_CI(pszToken, "north")) + nYIndex = iToken; + else if (EQUAL(pszToken, "z") || + STARTS_WITH_CI(pszToken, "alt") || + EQUAL(pszToken, "height")) + nZIndex = iToken; } CSLDestroy(papszTokens); if( nXIndex >= 0 && nYIndex >= 0 && nZIndex >= 0) diff -Nru gdal-2.4.0+dfsg/gcore/gdal_misc.cpp gdal-2.4.2+dfsg/gcore/gdal_misc.cpp --- gdal-2.4.0+dfsg/gcore/gdal_misc.cpp 2018-12-14 21:37:53.000000000 +0000 +++ gdal-2.4.2+dfsg/gcore/gdal_misc.cpp 2019-06-28 11:14:33.000000000 +0000 @@ -58,7 +58,7 @@ #include "ogr_spatialref.h" #include "ogr_geos.h" -CPL_CVSID("$Id: gdal_misc.cpp e5e7b313540f0ff913fadfe6a273fb7c356a22cb 2018-11-02 22:54:20 +0100 Even Rouault $") +CPL_CVSID("$Id: gdal_misc.cpp 594489ae762a8eca53b0109104be0024105432d6 2019-01-30 17:06:59 +0100 Even Rouault $") static int GetMinBitsForPair( const bool pabSigned[], const bool pabFloating[], const int panBits[]) @@ -2787,7 +2787,7 @@ if( psPrev ) psPrev->psNext = psNext; else if( psCOL->psChild == psIter ) - psCOL->psChild->psNext = psNext; + psCOL->psChild = psNext; psIter->psNext = nullptr; CPLDestroyXMLNode(psIter); psIter = psNext; diff -Nru gdal-2.4.0+dfsg/gcore/gdalpamdataset.cpp gdal-2.4.2+dfsg/gcore/gdalpamdataset.cpp --- gdal-2.4.0+dfsg/gcore/gdalpamdataset.cpp 2018-12-14 21:37:54.000000000 +0000 +++ gdal-2.4.2+dfsg/gcore/gdalpamdataset.cpp 2019-06-28 11:14:31.000000000 +0000 @@ -47,7 +47,7 @@ #include "ogr_core.h" #include "ogr_spatialref.h" -CPL_CVSID("$Id: gdalpamdataset.cpp aa6a7c2b18d9d679a349bb7d5683347d0caa9566 2018-07-12 15:26:22 +0200 Even Rouault $") +CPL_CVSID("$Id: gdalpamdataset.cpp b71180794d6a7f1763064d2e976160479826bd57 2019-04-09 10:56:33 +0200 Even Rouault $") /************************************************************************/ /* GDALPamDataset() */ @@ -418,7 +418,10 @@ /* -------------------------------------------------------------------- */ /* Apply any dataset level metadata. */ /* -------------------------------------------------------------------- */ - oMDMD.XMLInit( psTree, TRUE ); + if( oMDMD.XMLInit( psTree, TRUE ) ) + { + psPam->bHasMetadata = TRUE; + } /* -------------------------------------------------------------------- */ /* Try loading ESRI xml encoded GeodataXform. */ diff -Nru gdal-2.4.0+dfsg/gcore/gdal_version.h.in gdal-2.4.2+dfsg/gcore/gdal_version.h.in --- gdal-2.4.0+dfsg/gcore/gdal_version.h.in 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/gcore/gdal_version.h.in 2019-06-28 11:09:58.000000000 +0000 @@ -7,7 +7,7 @@ #ifndef GDAL_VERSION_MAJOR # define GDAL_VERSION_MAJOR 2 # define GDAL_VERSION_MINOR 4 -# define GDAL_VERSION_REV 0 +# define GDAL_VERSION_REV 2 # define GDAL_VERSION_BUILD 0 #endif @@ -24,9 +24,9 @@ #if !defined(DO_NOT_DEFINE_GDAL_RELEASE_DATE_AND_GDAL_RELEASE_NAME) #ifndef GDAL_RELEASE_DATE -# define GDAL_RELEASE_DATE 20181214 +# define GDAL_RELEASE_DATE 20190628 #endif #ifndef GDAL_RELEASE_NAME -# define GDAL_RELEASE_NAME "2.4.0" +# define GDAL_RELEASE_NAME "2.4.2" #endif #endif diff -Nru gdal-2.4.0+dfsg/gcore/rasterio.cpp gdal-2.4.2+dfsg/gcore/rasterio.cpp --- gdal-2.4.0+dfsg/gcore/rasterio.cpp 2018-12-14 21:37:56.000000000 +0000 +++ gdal-2.4.2+dfsg/gcore/rasterio.cpp 2019-06-28 11:14:32.000000000 +0000 @@ -55,7 +55,7 @@ #include "memdataset.h" #include "vrtdataset.h" -CPL_CVSID("$Id: rasterio.cpp 6b5bc8879996c446736147f8e7968693f05e9cf3 2018-12-09 14:31:55 +0100 Even Rouault $") +CPL_CVSID("$Id: rasterio.cpp 77de76f966d030df2126a63e60cbb39a55c3c401 2019-06-21 15:51:16 +0200 Even Rouault $") /************************************************************************/ /* IRasterIO() */ @@ -4139,13 +4139,13 @@ const char* pszSwathSize = CPLGetConfigOption("GDAL_SWATH_SIZE", nullptr); int nTargetSwathSize; if( pszSwathSize != nullptr ) - nTargetSwathSize = atoi(pszSwathSize); + nTargetSwathSize = static_cast( + std::min(GIntBig(INT_MAX), CPLAtoGIntBig(pszSwathSize))); else { // As a default, take one 1/4 of the cache size. - nTargetSwathSize = - std::min(INT_MAX, - static_cast(GDALGetCacheMax64() / 4)); + nTargetSwathSize = static_cast( + std::min(GIntBig(INT_MAX), GDALGetCacheMax64() / 4)); // but if the minimum idal swath buf size is less, then go for it to // avoid unnecessarily abusing RAM usage. @@ -4167,7 +4167,8 @@ nSrcBlockYSize * nPixelSize) ; } if( nTargetSwathSize > nIdealSwathBufSize ) - nTargetSwathSize = static_cast(nIdealSwathBufSize); + nTargetSwathSize = static_cast( + std::min(GIntBig(INT_MAX), nIdealSwathBufSize)); } if (nTargetSwathSize < 1000000) diff -Nru gdal-2.4.0+dfsg/GDALmake.opt.in gdal-2.4.2+dfsg/GDALmake.opt.in --- gdal-2.4.0+dfsg/GDALmake.opt.in 2018-12-14 21:34:19.000000000 +0000 +++ gdal-2.4.2+dfsg/GDALmake.opt.in 2019-06-28 11:09:58.000000000 +0000 @@ -123,7 +123,7 @@ # libtool targets and help variables LIBGDAL := libgdal.la LIBGDAL_CURRENT := 25 -LIBGDAL_REVISION := 0 +LIBGDAL_REVISION := 2 LIBGDAL_AGE := 5 # native build targets and variables @@ -476,13 +476,9 @@ # HAVE_POPPLER = @HAVE_POPPLER@ -POPPLER_HAS_OPTCONTENT = @POPPLER_HAS_OPTCONTENT@ -POPPLER_BASE_STREAM_HAS_TWO_ARGS = @POPPLER_BASE_STREAM_HAS_TWO_ARGS@ -POPPLER_0_20_OR_LATER = @POPPLER_0_20_OR_LATER@ -POPPLER_0_23_OR_LATER = @POPPLER_0_23_OR_LATER@ -POPPLER_0_58_OR_LATER = @POPPLER_0_58_OR_LATER@ -POPPLER_0_69_OR_LATER = @POPPLER_0_69_OR_LATER@ -POPPLER_INC = @POPPLER_INC@ +POPPLER_MAJOR_VERSION = @POPPLER_MAJOR_VERSION@ +POPPLER_MINOR_VERSION = @POPPLER_MINOR_VERSION@ +POPPLER_INC = @POPPLER_CFLAGS@ POPPLER_PLUGIN_LIB = @POPPLER_PLUGIN_LIB@ # diff -Nru gdal-2.4.0+dfsg/gnm/gnm.h gdal-2.4.2+dfsg/gnm/gnm.h --- gdal-2.4.0+dfsg/gnm/gnm.h 2018-12-14 21:37:56.000000000 +0000 +++ gdal-2.4.2+dfsg/gnm/gnm.h 2019-06-28 11:12:23.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: gnm.h 5524ee5324f7bd364d391d842a6488c90c0186a7 2018-04-02 16:20:13 +0200 Even Rouault $ + * $Id: gnm.h 8c1b90d2923ad24707b0fb51accc3074272924f2 2019-03-23 21:38:44 +0100 Even Rouault $ * * Project: GDAL/OGR Geography Network support (Geographic Network Model) * Purpose: GNM general public declarations. @@ -631,7 +631,6 @@ * @since GDAL 2.1 */ -// cppcheck-suppress copyCtorAndEqOperator class CPL_DLL GNMRule { public: @@ -643,6 +642,10 @@ explicit GNMRule(const char* pszRule); /** Constructor */ GNMRule(const GNMRule &oRule); + + /** Assignment operator */ + GNMRule& operator=(const GNMRule&) = default; + virtual ~GNMRule(); /** * @brief This function indicate if rule string was parsed successfully diff -Nru gdal-2.4.0+dfsg/GNUmakefile gdal-2.4.2+dfsg/GNUmakefile --- gdal-2.4.0+dfsg/GNUmakefile 2018-12-14 21:34:19.000000000 +0000 +++ gdal-2.4.2+dfsg/GNUmakefile 2019-06-28 11:09:58.000000000 +0000 @@ -4,7 +4,6 @@ $(GDAL_ROOT)/gcore/*.o \ $(GDAL_ROOT)/port/*.o \ $(GDAL_ROOT)/alg/*.o \ - $(GDAL_ROOT)/third_party/o/*.o \ $(GDAL_ROOT)/apps/commonutils.o \ $(GDAL_ROOT)/apps/gdalinfo_lib.o \ $(GDAL_ROOT)/apps/gdal_translate_lib.o \ @@ -22,6 +21,10 @@ GDAL_OBJ += $(GDAL_ROOT)/gnm/*.o $(GDAL_ROOT)/gnm/gnm_frmts/o/*.o endif +ifeq ($(HAVE_LERC),yes) + GDAL_OBJ += $(GDAL_ROOT)/third_party/o/*.o +endif + include ./ogr/file.lst GDAL_OBJ += $(addprefix ./ogr/,$(OBJ)) diff -Nru gdal-2.4.0+dfsg/makefile.vc gdal-2.4.2+dfsg/makefile.vc --- gdal-2.4.0+dfsg/makefile.vc 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/makefile.vc 2019-06-28 11:09:59.000000000 +0000 @@ -65,7 +65,7 @@ # # We want them to run before creating a DLL or static LIB file, but if they were in a target then # that target would have to be a dependency of dll or staticlib and would always have to run, making -# the dependant targets "out-of-date". +# the dependent targets "out-of-date". # # We don't want to re-link the whole DLL just because we tried to delete a static LIB that didn't # exist. We also don't want to install a stale DLL in a static build, so we'll remove main build diff -Nru gdal-2.4.0+dfsg/man/man1/gdal2tiles.1 gdal-2.4.2+dfsg/man/man1/gdal2tiles.1 --- gdal-2.4.0+dfsg/man/man1/gdal2tiles.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal2tiles.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal2tiles" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal2tiles" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdaladdo.1 gdal-2.4.2+dfsg/man/man1/gdaladdo.1 --- gdal-2.4.0+dfsg/man/man1/gdaladdo.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdaladdo.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdaladdo" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdaladdo" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdalbuildvrt.1 gdal-2.4.2+dfsg/man/man1/gdalbuildvrt.1 --- gdal-2.4.0+dfsg/man/man1/gdalbuildvrt.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdalbuildvrt.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdalbuildvrt" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdalbuildvrt" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_calc.1 gdal-2.4.2+dfsg/man/man1/gdal_calc.1 --- gdal-2.4.0+dfsg/man/man1/gdal_calc.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_calc.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_calc" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_calc" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdalcompare.1 gdal-2.4.2+dfsg/man/man1/gdalcompare.1 --- gdal-2.4.0+dfsg/man/man1/gdalcompare.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdalcompare.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdalcompare" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdalcompare" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal-config.1 gdal-2.4.2+dfsg/man/man1/gdal-config.1 --- gdal-2.4.0+dfsg/man/man1/gdal-config.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal-config.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal-config" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal-config" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_contour.1 gdal-2.4.2+dfsg/man/man1/gdal_contour.1 --- gdal-2.4.0+dfsg/man/man1/gdal_contour.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_contour.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_contour" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_contour" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdaldem.1 gdal-2.4.2+dfsg/man/man1/gdaldem.1 --- gdal-2.4.0+dfsg/man/man1/gdaldem.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdaldem.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdaldem" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdaldem" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_edit.1 gdal-2.4.2+dfsg/man/man1/gdal_edit.1 --- gdal-2.4.0+dfsg/man/man1/gdal_edit.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_edit.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_edit" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_edit" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_fillnodata.1 gdal-2.4.2+dfsg/man/man1/gdal_fillnodata.1 --- gdal-2.4.0+dfsg/man/man1/gdal_fillnodata.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_fillnodata.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_fillnodata" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_fillnodata" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_grid.1 gdal-2.4.2+dfsg/man/man1/gdal_grid.1 --- gdal-2.4.0+dfsg/man/man1/gdal_grid.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_grid.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_grid" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_grid" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdalinfo.1 gdal-2.4.2+dfsg/man/man1/gdalinfo.1 --- gdal-2.4.0+dfsg/man/man1/gdalinfo.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdalinfo.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdalinfo" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdalinfo" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdallocationinfo.1 gdal-2.4.2+dfsg/man/man1/gdallocationinfo.1 --- gdal-2.4.0+dfsg/man/man1/gdallocationinfo.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdallocationinfo.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdallocationinfo" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdallocationinfo" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdalmanage.1 gdal-2.4.2+dfsg/man/man1/gdalmanage.1 --- gdal-2.4.0+dfsg/man/man1/gdalmanage.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdalmanage.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdalmanage" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdalmanage" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_merge.1 gdal-2.4.2+dfsg/man/man1/gdal_merge.1 --- gdal-2.4.0+dfsg/man/man1/gdal_merge.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_merge.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_merge" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_merge" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdalmove.1 gdal-2.4.2+dfsg/man/man1/gdalmove.1 --- gdal-2.4.0+dfsg/man/man1/gdalmove.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdalmove.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdalmove" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdalmove" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_pansharpen.1 gdal-2.4.2+dfsg/man/man1/gdal_pansharpen.1 --- gdal-2.4.0+dfsg/man/man1/gdal_pansharpen.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_pansharpen.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_pansharpen" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_pansharpen" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_polygonize.1 gdal-2.4.2+dfsg/man/man1/gdal_polygonize.1 --- gdal-2.4.0+dfsg/man/man1/gdal_polygonize.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_polygonize.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_polygonize" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_polygonize" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_proximity.1 gdal-2.4.2+dfsg/man/man1/gdal_proximity.1 --- gdal-2.4.0+dfsg/man/man1/gdal_proximity.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_proximity.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_proximity" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_proximity" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_rasterize.1 gdal-2.4.2+dfsg/man/man1/gdal_rasterize.1 --- gdal-2.4.0+dfsg/man/man1/gdal_rasterize.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_rasterize.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_rasterize" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_rasterize" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_retile.1 gdal-2.4.2+dfsg/man/man1/gdal_retile.1 --- gdal-2.4.0+dfsg/man/man1/gdal_retile.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_retile.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_retile" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_retile" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_sieve.1 gdal-2.4.2+dfsg/man/man1/gdal_sieve.1 --- gdal-2.4.0+dfsg/man/man1/gdal_sieve.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_sieve.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_sieve" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_sieve" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdalsrsinfo.1 gdal-2.4.2+dfsg/man/man1/gdalsrsinfo.1 --- gdal-2.4.0+dfsg/man/man1/gdalsrsinfo.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdalsrsinfo.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdalsrsinfo" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdalsrsinfo" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdaltindex.1 gdal-2.4.2+dfsg/man/man1/gdaltindex.1 --- gdal-2.4.0+dfsg/man/man1/gdaltindex.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdaltindex.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdaltindex" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdaltindex" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdaltransform.1 gdal-2.4.2+dfsg/man/man1/gdaltransform.1 --- gdal-2.4.0+dfsg/man/man1/gdaltransform.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdaltransform.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdaltransform" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdaltransform" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_translate.1 gdal-2.4.2+dfsg/man/man1/gdal_translate.1 --- gdal-2.4.0+dfsg/man/man1/gdal_translate.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_translate.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_translate" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_translate" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdal_utilities.1 gdal-2.4.2+dfsg/man/man1/gdal_utilities.1 --- gdal-2.4.0+dfsg/man/man1/gdal_utilities.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdal_utilities.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdal_utilities" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdal_utilities" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gdalwarp.1 gdal-2.4.2+dfsg/man/man1/gdalwarp.1 --- gdal-2.4.0+dfsg/man/man1/gdalwarp.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gdalwarp.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gdalwarp" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gdalwarp" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gnmanalyse.1 gdal-2.4.2+dfsg/man/man1/gnmanalyse.1 --- gdal-2.4.0+dfsg/man/man1/gnmanalyse.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gnmanalyse.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gnmanalyse" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gnmanalyse" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gnmmanage.1 gdal-2.4.2+dfsg/man/man1/gnmmanage.1 --- gdal-2.4.0+dfsg/man/man1/gnmmanage.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gnmmanage.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gnmmanage" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gnmmanage" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/gnm_utilities.1 gdal-2.4.2+dfsg/man/man1/gnm_utilities.1 --- gdal-2.4.0+dfsg/man/man1/gnm_utilities.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/gnm_utilities.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "gnm_utilities" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "gnm_utilities" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/nearblack.1 gdal-2.4.2+dfsg/man/man1/nearblack.1 --- gdal-2.4.0+dfsg/man/man1/nearblack.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/nearblack.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "nearblack" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "nearblack" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/ogr2ogr.1 gdal-2.4.2+dfsg/man/man1/ogr2ogr.1 --- gdal-2.4.0+dfsg/man/man1/ogr2ogr.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/ogr2ogr.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "ogr2ogr" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "ogr2ogr" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/ogrinfo.1 gdal-2.4.2+dfsg/man/man1/ogrinfo.1 --- gdal-2.4.0+dfsg/man/man1/ogrinfo.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/ogrinfo.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "ogrinfo" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "ogrinfo" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/ogrlineref.1 gdal-2.4.2+dfsg/man/man1/ogrlineref.1 --- gdal-2.4.0+dfsg/man/man1/ogrlineref.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/ogrlineref.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "ogrlineref" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "ogrlineref" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/ogrmerge.1 gdal-2.4.2+dfsg/man/man1/ogrmerge.1 --- gdal-2.4.0+dfsg/man/man1/ogrmerge.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/ogrmerge.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "ogrmerge" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "ogrmerge" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/ogrtindex.1 gdal-2.4.2+dfsg/man/man1/ogrtindex.1 --- gdal-2.4.0+dfsg/man/man1/ogrtindex.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/ogrtindex.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "ogrtindex" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "ogrtindex" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/ogr_utilities.1 gdal-2.4.2+dfsg/man/man1/ogr_utilities.1 --- gdal-2.4.0+dfsg/man/man1/ogr_utilities.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/ogr_utilities.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "ogr_utilities" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "ogr_utilities" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/pct2rgb.1 gdal-2.4.2+dfsg/man/man1/pct2rgb.1 --- gdal-2.4.0+dfsg/man/man1/pct2rgb.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/pct2rgb.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "pct2rgb" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "pct2rgb" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/man/man1/rgb2pct.1 gdal-2.4.2+dfsg/man/man1/rgb2pct.1 --- gdal-2.4.0+dfsg/man/man1/rgb2pct.1 2018-12-14 21:40:08.000000000 +0000 +++ gdal-2.4.2+dfsg/man/man1/rgb2pct.1 2019-06-28 11:14:43.000000000 +0000 @@ -1,4 +1,4 @@ -.TH "rgb2pct" 1 "Fri Dec 14 2018" "GDAL" \" -*- nroff -*- +.TH "rgb2pct" 1 "Fri Jun 28 2019" "GDAL" \" -*- nroff -*- .ad l .nh .SH NAME diff -Nru gdal-2.4.0+dfsg/NEWS gdal-2.4.2+dfsg/NEWS --- gdal-2.4.0+dfsg/NEWS 2018-12-14 21:34:19.000000000 +0000 +++ gdal-2.4.2+dfsg/NEWS 2019-06-28 11:09:58.000000000 +0000 @@ -1,3 +1,292 @@ += GDAL/OGR 2.4.2 Release Notes = + +The 2.4.2 release is a bug fix release. + +== Build == + + * Fix build --with-curl --without-threads (#1386) + * Fix build on netBSD 8 + * Fix warnings with GCC 9 + * Add support for Poppler 0.75.0 (#1388), 0.76.0 + +== Port == + + * /vsitar/: handle .tar file header with space padding instead of 0 for file size (#1396) + * /vsicurl/: allow 'Connection timed out' CURL errors as candidate for HTTP retry + * /vsicurl/: GetFileSize(): when HEAD request does not return Content-Length header, retry with GET + * /vsicurl/: automatically detect signed URLs where host ends with a port number; also detect signed URLs as created with the AWS4-HMAC-SHA256 method (#1456) + * /vsis3/: for a long living file handle, refresh credentials coming from EC2/AIM (#1593) + +== GDAL algorithms == + + * GDALCreateReprojectionTransformerEx(): do not emit error if reverse transformation fails, and fix crash when trying to use null reverse transformation + * Warper: fix GDAL 2.3 regression in a situation with source nodata value, multiple bands and nearest resampling where the logic to detect which source pixels are nodata was inverted (#1656) + * Contour generator: fix SegmentMerger list iterator skipping and out of bounds error. (#1670) + * Rasterize: fix crash when working buffer is larger than 2GB (fix also gvBurnPoint) (#1338) + +== GDAL core == + + * GDALInvGeoTransform(): make it work with scale and rotation/skew coefficients of small absolute value (#1615) + * GDALCopyWholeRasterGetSwathSize(): fix potential int overflows for big values of GDAL_SWATH_SIZE or GDAL_CACHEMAX + * PAM: preserve existing metadata when setting new one (#1430) + +== GDAL utliities == + + * gdal_calc.py: Fixed NaN-streaking in output images when the --allBands option is given to tiled images, and removed redundant calculation of nXValid. + * gdal_polygonize.py: fix outputing to geojson without explicit -f switch (#1533) + * gdal_contour: remove explicit width/precision=12/3 of the elev field (#1487) + +== GDAL drivers == + +AIGRID / AVCBin driver: + * fix filename case adjustment that failed on /vsi filesystems (#1385) + +BAG driver: + * fix potential nullptr deref on corrupted file + +ENVI driver: + * add read support for reading GCPs (#1528), and fix off-by-one offset on line,pixel on reading GCP + +GTiff driver: + * make WEBP_LEVEL to be honored in Create() mode (#1594) + * PushMetadataToPam(): early exit when PAM is disabled, to avoid error messages + * do not generate a TIFFTAG_GDAL_METADATA with color interpretation information for JPEG YCbCr compression + * Internal libtiff: TIFFWriteEncodedStrip/TIFFWriteEncodedTile: fix rewriting of LZW-compressed data (#1439) + +GXF driver: + * avoid closing the file pointer before being sure this is a GXF driver, otherwise this can prevent the opening of some raw format files (#1521) + +HDF5 driver: + * fix handling of attributes of type SCHAR, UCHAR, USHORT and UINT (https://github.com/mapbox/rasterio/issues/1663) + * detect nodata from netCDF _FillValue; add more strict checks for accepting datasets for GCP, and handle nodata in GCP too (#1451) + +ISIS3 driver: + * fix parsing of lists in JSon metadata, and quote string items when writing lists when needed (#1510) + +KEA driver: + * return error when deleting metadata item rather than crashing (#1681) + +MRF driver: + * prevent integer overflow + +MrSID driver: + * fix potential crash when a zoom level cannot be opened + +netCDF driver: + * avoid inappropriate shift by -360 when attribute axis=X is set (#1440) + +NITF driver: + * fix parsing of SENSRB TRE (#1520) + +PDF driver: + * avoid possible assertion in PDFium backend on corrupted files + +PDS3 driver: + * add support for ENCODING_TYPE=DCT_DECOMPRESSED (#1457) + +RS2 driver: + * add half-pixel shift to reported GCP line and column numbers (#1666) + +VRT driver: + * Python pixel functions: also probe libpython3.Xm.so.1.0 (#1660) + +WMS driver: + * use proper JSon parsing for ESRI MapServer document (#1416) + +XYZ driver: + * fix regression regarding header lines that are not X,Y,Z (#1472) + +== OGR core == + + * segmentize(): fix 2.4.1 regression when 2 points are really close compared to the segmentizatin distance (#1414). Also handle the M dimension + * RawDataset: use generic RasterIO() implementation when non-nearest resampling is asked (#1301) + +== OGR utilities == + + * ogrmerge.py: add shared='1' to speed-up -single mode with many layers + +== OGR drivers == + +EEDA driver: + * Switch to v1alpha API + +ElasticSearch driver: + * set 'application/json' in RunRequest() with POST (#1628) + * GeoJSON type field should be mapped as text in ES>=5 + * Fix _mapping url + +FileGDB/OpenFileGDB: + * be robust when winding order of outer ring is incorrect (#1369) + +GeoJSON driver: + * fix recognizing some documents with members sorted alphabetically (#1537) + * avoid SetFeature() to repeat first feature when looping over features (#1687) + +GeoJSONSeq driver: + * be more robust to invalid objects, and fixes performance issue on corrupted files. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13770. + +GML driver: + * GML/WFS: add minimum support for 'hexBinary' type (as string) (#1375) + +GMLAS driver: + * avoid null pointer dereference on some schemas + * do not use space as separator for schema filename in XSD open option (#1452) + +GMT: + * use file extension based detection to accept files without header (#1461) + +GPKG driver: + * change default value of OGR_GPKG_FOREIGN_KEY_CHECK to NO, so as to avoid issues in downstream software + * insert more accurate spatial extent in gpkg_contents + * fix memory leak in case of corrupted database. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14683. + * set sqlite3_busy_timeout, handle SQLITE_BUSY during tile read (#1370) + +PDS driver: + * fix heap-buffer-overflow in error code path. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14512. + +PLScenes driver: + * plscenesconf.json: add missing fields for PSOrthoTile + +PostgreSQL driver: + * do not attempt to create VARCHAR(n) columns with n >= 10485760 (#1508) + +Shapefile driver: + * better deal with empty .shp+.shx and SHAPE_RESTORE_SHX (#1525) + * launder layer name to get Windows compatible filename + * DeleteLayer(): make it delete .cpg, .sbn, .sbx, .qpj and other sidecar files (#1405) + +WaSP driver: + * on creation, make sure the layer geometry type set on the feature definition is wkbLineString25D + +WFS3 driver: + * handle paging wth missing type for rel:next, and better deal with user:pwd in URL + * use 'id' attribute of collection items, if 'name' not available + += GDAL/OGR 2.4.1 Release Notes = + +The 2.4.1 release is a bug fix release. + +== Build == + +Unix: + * Fix build with OpenBSD which doesn't support RLIMIT_AS (#1163) + * fix build --without-lerc (#1224) + * configure: fix netcdf_mem.h detection in netcdf 4.6.2 (#1328) + +Windows: + * Fix build issue for builds without curl (#1251) + * nmake.opt: remove unicode character at line starting with '# 4275' that apparently cause build issues with some MSVC versions (#1169) + +All: + * Poppler: revision version management. Drop support for ancient versions older than 0.23.0 + * Add support for Poppler 0.72.0 and 0.73.0 (#1207, #1208) + +== Port == + + * cpl_vsi.h: fix include for C use + * VSICurlHandle::ReadMultiRange(): use default implementation if there is a single range. May help to improve performance for #1206 + * VSIGZipWriteHandleMT: avoid potential deadlock in case of error + * /vsihdfs/: fix Read() when more than one hdfsRead call is needed (#1349) + +== GDAL utilities == + + * gdalwarp -crop_to_cutline: do not round computed target extent to be aligned on the grid of the source raster if -tr is set (restore partially pre 2.4 behaviour) (#1173) + * gdalwarp: assume -tap when using -crop_to_cutline, -tr and -wo CUTLINE_ALL_TOUCHED=TRUE, so as to avoid issues with polygons smaller than 1x1 pixels (#1360) + * gdal2tiles: give local tile layer and basemap layers same min/max zoom levels as generated tile cache (#1074) + * gdal2tiles: fix breakage of openlayers.html getURL() javascript function, introduced in GDAL 2.3.3 / 2.4.0 (#1127) + * gdal2tiles: prevent accidental copy of full GeoTIFF into temporary .vrt file + * Fix double-free in StripIrrelevantOptions() (triggered by gdalinfo / ogrinfo --format) + * gdal_retile.py: use nodata value from origin dataset + +== GDAL algorithms == + + * rasterize: fix crash when working buffer is larger than 2GB (#1338) + +== GDAL drivers == + +COSAR driver: + * avoid out-of-bound write on corrupted dataset. Fixes OSS Fuzz #12360 + +GTiff driver: + * only report scale/offset deduced from ModelTiepointTag and ModelPixelScaleTag if the SRS has a vertical component (and thus currently if GTIFF_REPORT_COMPD_CS is set) (https://issues.qgis.org/issues/20493) + * Lerc codec: properly initialize state after Create() so that BuildOverviews() succeed (#1257) + +KMLSuperOverlay driver: + * report color table of single overlay datasets, and also handle some variation in the KML structure (https://issues.qgis.org/issues/20173) + +JPEG driver: + * fix GDAL 2.3.0 performance regression when decoding JPEG (or GPKG using JPEG) images (#1324) + +netCDF driver: + * fix crash when opening a dataset with an attribute of length 0 (#1303) + +PDSv3 driver: + * fix decoding of band interleaved images (such as for CRISM HSP) (#1239) + +XPM driver: + * fix read heap buffer overflow on corrupted image. Fixes OSS Fuzz #13455 + +== OGR core == + + * Polyhedral surface: fix importFromWKT to properly fix Z/M flag + * OGRGeometryFactory::GetCurveParmeters(): fix assertion when coordinates are very near 0 (relates to OSS Fuzz #13408) + * OGRLineString::segmentize(): fix issues when segment length is divisible by maxlength (#1341) + +== OGRSpatialReference == + + * Coordinate transformation: do not apply +towgs84 if it is present only in one one of the CRS, when using PROJ >= 5 (#1156) + +== OGR drivers == + +CSW driver: + * fix crash when geometry parsing fails (#1248) + +DXF driver: + * fix double-free issue in case of writing error. Fixes OSS Fuzz #13516 + +Elasticsearch driver: + * Fix index comparison bug when a index have at least one mapping + +GeoJSON driver: + * speed-up random reading with GetFeature() to retrieve performance similar to GDAL 2.2 or before (https://issues.qgis.org/issues/21085) + +GeoPackage driver: + * allow srs_id with negative values + +GML driver: + * write SRSName element in .gfs when parsing a GML file with srsName only on top-level boundedBy element (#1210) + * Add "FeatureType" to list of suffixes recognized by XSD parser for compatibility with schemas produced by ArcGIS Server + * Fix assertion in CPLGetValueType when testing non-ASCII chars + +MITAB driver: + * .tab: fix deleting a feature without geometry (#1232) + * adapt dynamically default projection bounds to false_easting/false_northing values (#1316) + * avoid potential assertion or stack buffer overflow on corrupted .ind files. Fixes OSS Fuzz #11999. + * prevent potential infinite recursion on broken indexes. Fixes OSS Fuzz #12739. + +MSSQLSpatial driver: + * Add option to expose the FID column as a feature attribute (#1227) + +ODS driver: + * allow opening tables with empty cells with huge values of columns-repeated attribute at end of line (#1243) + * aavoid potential null pointer dereference when writing to corrupted filename. Fixes OSS Fuz #12976. + +PDF driver: + * avoid division by zero when generating from vector content whose bounding box is almost a horizontal or vertical line. Fixes OSS Fuzz #13408 + +PGDump driver: + * emit correct SQL statement when UNLOGGED=ON + +Selafin driver: + * avoid null pointer dereference on corrupted files. Fixes OSS Fuzz #12356 + +VFK driver: + * fix regression where curved geometries were ignored (#1351) + +== Python bindings == + + * fix Dataset.ReadAsRaster() on CInt16 data type (#1186) + = GDAL/OGR 2.4.0 Release Notes = == In a nutshell... == diff -Nru gdal-2.4.0+dfsg/nmake.opt gdal-2.4.2+dfsg/nmake.opt --- gdal-2.4.0+dfsg/nmake.opt 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/nmake.opt 2019-06-28 11:09:59.000000000 +0000 @@ -145,7 +145,7 @@ !IFNDEF WARNFLAGS # 4127: conditional expression is constant # 4251: 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2' -# 4275: non – DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier' +# 4275: non DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier' # 4786: ?????????? # 4100: 'identifier' : unreferenced formal parameter # 4245: 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch @@ -640,20 +640,11 @@ #ZLIB_INC = -IC:\projects\zlib #ZLIB_LIB = C:\projects\lib\Release\zlib.lib -# Uncomment for PDF support -# Uncomment POPPLER_BASE_STREAM_HAS_TWO_ARGS = YES for Poppler >= 0.16.0 -# Uncomment POPPLER_0_20_OR_LATER = YES for Poppler >= 0.20.0 -# Uncomment POPPLER_0_23_OR_LATER = YES for Poppler >= 0.23.0 -# Uncomment POPPLER_0_58_OR_LATER = YES for Poppler >= 0.58.0 -# Uncomment POPPLER_0_69_OR_LATER = YES for Poppler >= 0.69.0 +# Uncomment for PDF support, and update version numbers (poppler 0.23 or later required) #POPPLER_ENABLED = YES #POPPLER_CFLAGS = -Ie:/kde/include -Ie:/kde/include/poppler -#POPPLER_HAS_OPTCONTENT = YES -#POPPLER_BASE_STREAM_HAS_TWO_ARGS = YES -#POPPLER_0_20_OR_LATER = YES -#POPPLER_0_23_OR_LATER = YES -#POPPLER_0_58_OR_LATER = YES -#POPPLER_0_69_OR_LATER = YES +#POPPLER_MAJOR_VERSION = 0 +#POPPLER_MINOR_VERSION = 69 #POPPLER_LIBS = e:/kde/lib/poppler.lib e:/kde/lib/freetype.lib e:/kde/lib/liblcms-1.lib advapi32.lib gdi32.lib # Uncomment for PDF support diff -Nru gdal-2.4.0+dfsg/ogr/ogr_core.h gdal-2.4.2+dfsg/ogr/ogr_core.h --- gdal-2.4.0+dfsg/ogr/ogr_core.h 2018-12-14 21:38:03.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogr_core.h 2019-06-28 11:11:12.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: ogr_core.h 1e082b59d067cf2edf5713e15101c0b369d37e9a 2018-12-02 22:16:23 +0300 drons $ + * $Id: ogr_core.h 8c1b90d2923ad24707b0fb51accc3074272924f2 2019-03-23 21:38:44 +0100 Even Rouault $ * * Project: OpenGIS Simple Features Reference Implementation * Purpose: Define some core portability services for cross-platform OGR code. @@ -54,7 +54,6 @@ { #include -// cppcheck-suppress copyCtorAndEqOperator class CPL_DLL OGREnvelope { public: @@ -69,6 +68,7 @@ MinX(oOther.MinX),MaxX(oOther.MaxX), MinY(oOther.MinY), MaxY(oOther.MaxY) { } + OGREnvelope& operator=(const OGREnvelope&) = default; double MinX; double MaxX; @@ -156,7 +156,6 @@ extern "C++" { -// cppcheck-suppress copyCtorAndEqOperator class CPL_DLL OGREnvelope3D : public OGREnvelope { public: @@ -171,6 +170,7 @@ MinZ(oOther.MinZ), MaxZ(oOther.MaxZ) { } + OGREnvelope3D& operator=(const OGREnvelope3D&) = default; double MinZ; double MaxZ; diff -Nru gdal-2.4.0+dfsg/ogr/ogrct.cpp gdal-2.4.2+dfsg/ogr/ogrct.cpp --- gdal-2.4.0+dfsg/ogr/ogrct.cpp 2018-12-14 21:38:07.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrct.cpp 2019-06-28 11:11:10.000000000 +0000 @@ -65,7 +65,7 @@ #endif #endif -CPL_CVSID("$Id: ogrct.cpp ba2ef4045f82fd2260f1732e9e46a927277ac93d 2018-05-06 19:07:03 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrct.cpp 7751adc594266c08b0e79c8a9328849dfc675771 2018-12-18 00:17:16 +0100 Even Rouault $") #if PROJ_VERSION == 4 /* ==================================================================== */ @@ -856,6 +856,51 @@ "+x_0=0.0 +y_0=0 +k=1.0 +units=m +no_defs") == 0; } + // Remove towgs84/nadgrids if it is present only on one side. + // Only really needed for PROJ 5, but doesn't hurt for PROJ 4 + { + const bool bSrcHasToWGS84Transform = + strstr(pszSrcProj4Defn, "+towgs84") != nullptr || + strstr(pszSrcProj4Defn, "+nadgrids") != nullptr; + const bool bSrcHasDatum = strstr(pszSrcProj4Defn, "+datum") != nullptr; + const bool bDstHasToWGS84Transform = + strstr(pszDstProj4Defn, "+towgs84") != nullptr || + strstr(pszDstProj4Defn, "+nadgrids") != nullptr; + const bool bDstHasDatum = strstr(pszDstProj4Defn, "+datum") != nullptr; + + const auto removeToken = [](const CPLString& osStr, const char* token) { + CPLString osRet(osStr); + auto pos = osStr.find(token); + if( pos == std::string::npos ) + return osRet; + auto posNextOpt = osStr.find(" +", pos); + if( posNextOpt == std::string::npos ) + { + osRet.resize(pos); + return osRet; + } + osRet = osRet.substr(0, pos) + osRet.substr(posNextOpt + 1); + return osRet; + }; + + if( bSrcHasToWGS84Transform && !(bDstHasToWGS84Transform || bDstHasDatum) ) + { + CPLString osSrcProj4Defn(pszSrcProj4Defn); + osSrcProj4Defn = removeToken(osSrcProj4Defn, "+towgs84"); + osSrcProj4Defn = removeToken(osSrcProj4Defn, "+nadgrids"); + CPLFree(pszSrcProj4Defn); + pszSrcProj4Defn = CPLStrdup(osSrcProj4Defn); + } + else if( bDstHasToWGS84Transform && !(bSrcHasToWGS84Transform || bSrcHasDatum) ) + { + CPLString osDstProj4Defn(pszDstProj4Defn); + osDstProj4Defn = removeToken(osDstProj4Defn, "+towgs84"); + osDstProj4Defn = removeToken(osDstProj4Defn, "+nadgrids"); + CPLFree(pszDstProj4Defn); + pszDstProj4Defn = CPLStrdup(osDstProj4Defn); + } + } + /* -------------------------------------------------------------------- */ /* Establish PROJ.4 handle for source if projection. */ /* -------------------------------------------------------------------- */ diff -Nru gdal-2.4.0+dfsg/ogr/ogrgeometryfactory.cpp gdal-2.4.2+dfsg/ogr/ogrgeometryfactory.cpp --- gdal-2.4.0+dfsg/ogr/ogrgeometryfactory.cpp 2018-12-14 21:38:07.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrgeometryfactory.cpp 2019-06-28 11:12:14.000000000 +0000 @@ -64,7 +64,7 @@ #define UNUSED_IF_NO_GEOS #endif -CPL_CVSID("$Id: ogrgeometryfactory.cpp 93bd2427dbca537cfa6aa37319ec9e1e0b193934 2018-11-01 19:37:07 +0100 Even Rouault $") +CPL_CVSID("$Id: ogrgeometryfactory.cpp ea4800d376d2a48784a05bc8c252929dcaf83af9 2019-02-26 15:48:51 +0100 Even Rouault $") /************************************************************************/ /* createFromWkb() */ @@ -4633,7 +4633,7 @@ dy12 *= dfInvScale; const double det = dx01 * dy12 - dx12 * dy01; - if( fabs(det) < 1.0e-8 ) + if( fabs(det) < 1.0e-8 || CPLIsNan(det) ) { return FALSE; } diff -Nru gdal-2.4.0+dfsg/ogr/ogrlinestring.cpp gdal-2.4.2+dfsg/ogr/ogrlinestring.cpp --- gdal-2.4.0+dfsg/ogr/ogrlinestring.cpp 2018-12-14 21:38:08.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrlinestring.cpp 2019-06-28 11:12:14.000000000 +0000 @@ -31,11 +31,12 @@ #include "ogr_geos.h" #include "ogr_p.h" +#include #include #include #include -CPL_CVSID("$Id: ogrlinestring.cpp 7b9e27aa9fa7d5fd0c2ebdcfa3c563d0c61d462c 2018-09-28 01:42:27 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrlinestring.cpp fb6f0afdadb8b8929fea765b571109d0886755f8 2019-04-03 12:21:55 +0200 Even Rouault $") namespace { @@ -2520,13 +2521,14 @@ reversePoints(); segmentize(dfMaxLength); reversePoints(); + return; } OGRRawPoint* paoNewPoints = nullptr; double* padfNewZ = nullptr; + double* padfNewM = nullptr; int nNewPointCount = 0; const double dfSquareMaxLength = dfMaxLength * dfMaxLength; - const int nCoordinateDimension = getCoordinateDimension(); for( int i = 0; i < nPointCount; i++ ) { @@ -2535,13 +2537,20 @@ sizeof(OGRRawPoint) * (nNewPointCount + 1))); paoNewPoints[nNewPointCount] = paoPoints[i]; - if( nCoordinateDimension == 3 ) + if( padfZ != nullptr ) { padfNewZ = static_cast( CPLRealloc(padfNewZ, sizeof(double) * (nNewPointCount + 1))); padfNewZ[nNewPointCount] = padfZ[i]; } + if( padfM != nullptr ) + { + padfNewM = static_cast( + CPLRealloc(padfNewM, sizeof(double) * (nNewPointCount + 1))); + padfNewM[nNewPointCount] = padfM[i]; + } + nNewPointCount++; if( i == nPointCount - 1 ) @@ -2550,10 +2559,10 @@ const double dfX = paoPoints[i+1].x - paoPoints[i].x; const double dfY = paoPoints[i+1].y - paoPoints[i].y; const double dfSquareDist = dfX * dfX + dfY * dfY; - if( dfSquareDist > dfSquareMaxLength ) + if( dfSquareDist - dfSquareMaxLength > 1e-5 * dfSquareMaxLength ) { const double dfIntermediatePoints = - floor(sqrt(dfSquareDist / dfSquareMaxLength)); + floor(sqrt(dfSquareDist / dfSquareMaxLength) - 1e-2); const int nIntermediatePoints = DoubleToIntClamp(dfIntermediatePoints); @@ -2569,6 +2578,7 @@ nNewPointCount, nIntermediatePoints); CPLFree(paoNewPoints); CPLFree(padfNewZ); + CPLFree(padfNewM); return; } @@ -2576,13 +2586,20 @@ CPLRealloc(paoNewPoints, sizeof(OGRRawPoint) * (nNewPointCount + nIntermediatePoints))); - if( nCoordinateDimension == 3 ) + if( padfZ != nullptr ) { padfNewZ = static_cast( CPLRealloc(padfNewZ, sizeof(double) * (nNewPointCount + nIntermediatePoints))); } + if( padfM != nullptr ) + { + padfNewM = static_cast( + CPLRealloc(padfNewM, + sizeof(double) * (nNewPointCount + + nIntermediatePoints))); + } for( int j = 1; j <= nIntermediatePoints; j++ ) { @@ -2590,11 +2607,16 @@ paoPoints[i].x + j * dfX / (nIntermediatePoints + 1); paoNewPoints[nNewPointCount + j - 1].y = paoPoints[i].y + j * dfY / (nIntermediatePoints + 1); - if( nCoordinateDimension == 3 ) + if( padfZ != nullptr ) { // No interpolation. padfNewZ[nNewPointCount + j - 1] = padfZ[i]; } + if( padfM != nullptr ) + { + // No interpolation. + padfNewM[nNewPointCount + j - 1] = padfM[i]; + } } nNewPointCount += nIntermediatePoints; @@ -2605,11 +2627,16 @@ paoPoints = paoNewPoints; nPointCount = nNewPointCount; - if( nCoordinateDimension == 3 ) + if( padfZ != nullptr ) { CPLFree(padfZ); padfZ = padfNewZ; } + if( padfM != nullptr ) + { + CPLFree(padfM); + padfM = padfNewM; + } } /************************************************************************/ diff -Nru gdal-2.4.0+dfsg/ogr/ogrpgeogeometry.cpp gdal-2.4.2+dfsg/ogr/ogrpgeogeometry.cpp --- gdal-2.4.0+dfsg/ogr/ogrpgeogeometry.cpp 2018-12-14 21:38:08.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrpgeogeometry.cpp 2019-06-28 11:11:10.000000000 +0000 @@ -53,7 +53,7 @@ #include "ogr_core.h" #include "ogr_p.h" -CPL_CVSID("$Id: ogrpgeogeometry.cpp ba2ef4045f82fd2260f1732e9e46a927277ac93d 2018-05-06 19:07:03 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrpgeogeometry.cpp 57154f136f8080a9a3e0a38e5d279d51535724cf 2019-03-18 12:31:56Z Even Rouault $") constexpr int SHPP_TRISTRIP = 0; constexpr int SHPP_TRIFAN = 1; @@ -2882,8 +2882,12 @@ if( tabPolygons != nullptr ) { int isValidGeometry = FALSE; + // The outer ring is supposed to be clockwise oriented + // If it is not, then use the default/slow method. const char* papszOptions[] = - { "METHOD=ONLY_CCW", nullptr }; + { !(tabPolygons[0]->getExteriorRing()->isClockwise()) ? + "METHOD=DEFAULT" : "METHOD=ONLY_CCW", + nullptr }; poOGR = OGRGeometryFactory::organizePolygons( reinterpret_cast(tabPolygons), nParts, diff -Nru gdal-2.4.0+dfsg/ogr/ogrpolyhedralsurface.cpp gdal-2.4.2+dfsg/ogr/ogrpolyhedralsurface.cpp --- gdal-2.4.0+dfsg/ogr/ogrpolyhedralsurface.cpp 2018-12-14 21:38:08.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrpolyhedralsurface.cpp 2019-06-28 11:11:12.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: ogrpolyhedralsurface.cpp e7a90bdc58142dd21dfe6d7bf960e96b3f79de5d 2018-05-10 22:33:56 +0200 Even Rouault $ + * $Id: ogrpolyhedralsurface.cpp bbef1b9bd896f536bfb89485502c127d54f8353b 2019-01-18 20:56:04 +0100 Even Rouault $ * * Project: OpenGIS Simple Features Reference Implementation * Purpose: The OGRPolyhedralSurface geometry class. @@ -34,7 +34,7 @@ #include "ogr_api.h" #include "ogr_libs.h" -CPL_CVSID("$Id: ogrpolyhedralsurface.cpp e7a90bdc58142dd21dfe6d7bf960e96b3f79de5d 2018-05-10 22:33:56 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrpolyhedralsurface.cpp bbef1b9bd896f536bfb89485502c127d54f8353b 2019-01-18 20:56:04 +0100 Even Rouault $") /************************************************************************/ /* OGRPolyhedralSurface() */ @@ -436,6 +436,9 @@ if( szToken[0] != ')' ) return OGRERR_CORRUPT_DATA; + set3D(oMP.Is3D()); + setMeasured(oMP.IsMeasured()); + *ppszInput = pszInput; return OGRERR_NONE; } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/amigocloud/ogr_amigocloud.h gdal-2.4.2+dfsg/ogr/ogrsf_frmts/amigocloud/ogr_amigocloud.h --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/amigocloud/ogr_amigocloud.h 2018-12-14 21:38:09.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/amigocloud/ogr_amigocloud.h 2019-06-28 11:11:42.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: ogr_amigocloud.h 22f8ae3bf7bc3cccd970992655c63fc5254d3206 2018-04-08 20:13:05 +0200 Even Rouault $ + * $Id: ogr_amigocloud.h 8c1b90d2923ad24707b0fb51accc3074272924f2 2019-03-23 21:38:44 +0100 Even Rouault $ * * Project: AMIGOCLOUD Translator * Purpose: Definition of classes for OGR AmigoCloud driver. @@ -61,7 +61,6 @@ } }; -// cppcheck-suppress copyCtorAndEqOperator class OGRAmigoCloudFID { public: @@ -82,12 +81,8 @@ iFID=0; } - OGRAmigoCloudFID(const OGRAmigoCloudFID& fid) : - iIndex( fid.iIndex ), - iFID( fid.iFID ), - osAmigoId( fid.osAmigoId.c_str() ) - { - } + OGRAmigoCloudFID(const OGRAmigoCloudFID& fid) = default; + OGRAmigoCloudFID& operator=(const OGRAmigoCloudFID& fid) = default; }; /************************************************************************/ diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/avc/avc_misc.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/avc/avc_misc.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/avc/avc_misc.cpp 2018-12-14 21:38:11.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/avc/avc_misc.cpp 2019-06-28 11:11:43.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: avc_misc.cpp d2c27a5f6fa74fc4793b570b3c56ce70b13e3b3f 2018-03-02 17:18:53Z Even Rouault $ + * $Id: avc_misc.cpp 5b9501f45e56a5cbe728b2e651f38e1823e1cb56 2019-04-06 15:27:03 +0200 Even Rouault $ * * Name: avc_misc.c * Project: Arc/Info vector coverage (AVC) BIN<->E00 conversion library @@ -232,7 +232,6 @@ * necessary, and return a reference to that filename. * * This function works on the original buffer and returns a reference to it. - * It does nothing on Windows systems where filenames are not case sensitive. * * NFW: It seems like this could be made somewhat more efficient by * getting a directory listing and doing a case insensitive search in @@ -243,32 +242,12 @@ **********************************************************************/ char *AVCAdjustCaseSensitiveFilename(char *pszFname) { - -#ifdef _WIN32 - /*----------------------------------------------------------------- - * Nothing to do on Windows - *----------------------------------------------------------------*/ - return pszFname; - -#else - /*----------------------------------------------------------------- - * Unix case. - *----------------------------------------------------------------*/ VSIStatBufL sStatBuf; char *pszTmpPath = nullptr; int nTotalLen, iTmpPtr; GBool bValidPath; /*----------------------------------------------------------------- - * Remap '\\' to '/' - *----------------------------------------------------------------*/ - for(pszTmpPath = pszFname; *pszTmpPath != '\0'; pszTmpPath++) - { - if (*pszTmpPath == '\\') - *pszTmpPath = '/'; - } - - /*----------------------------------------------------------------- * First check if the filename is OK as is. *----------------------------------------------------------------*/ if (VSIStatL(pszFname, &sStatBuf) == 0) @@ -280,11 +259,20 @@ nTotalLen = (int)strlen(pszTmpPath); /*----------------------------------------------------------------- + * Remap '\\' to '/' + *----------------------------------------------------------------*/ + for (iTmpPtr=0; iTmpPtr< nTotalLen; iTmpPtr++) + { + if (pszTmpPath[iTmpPtr] == '\\') + pszTmpPath[iTmpPtr] = '/'; + } + + /*----------------------------------------------------------------- * Try all lower case, check if the filename is OK as that. *----------------------------------------------------------------*/ for (iTmpPtr=0; iTmpPtr< nTotalLen; iTmpPtr++) { - if ( pszTmpPath[iTmpPtr] >= 0x41 && pszTmpPath[iTmpPtr] <= 0x5a ) + if ( pszTmpPath[iTmpPtr] >= 'A' && pszTmpPath[iTmpPtr] <= 'Z' ) pszTmpPath[iTmpPtr] += 32; } @@ -300,7 +288,7 @@ *----------------------------------------------------------------*/ for (iTmpPtr=0; iTmpPtr< nTotalLen; iTmpPtr++) { - if ( pszTmpPath[iTmpPtr] >= 0x61 && pszTmpPath[iTmpPtr] <= 0x7a ) + if ( pszTmpPath[iTmpPtr] >= 'a' && pszTmpPath[iTmpPtr] <= 'z' ) pszTmpPath[iTmpPtr] -= 32; } @@ -315,9 +303,18 @@ * OK, file either does not exist or has the wrong cases... we'll * go backwards until we find a portion of the path that is valid. *----------------------------------------------------------------*/ - iTmpPtr = nTotalLen; - bValidPath = FALSE; + strcpy(pszTmpPath, pszFname); + /*----------------------------------------------------------------- + * Remap '\\' to '/' + *----------------------------------------------------------------*/ + for (iTmpPtr=0; iTmpPtr< nTotalLen; iTmpPtr++) + { + if (pszTmpPath[iTmpPtr] == '\\') + pszTmpPath[iTmpPtr] = '/'; + } + + bValidPath = FALSE; while(iTmpPtr > 0 && !bValidPath) { /*------------------------------------------------------------- @@ -402,8 +399,6 @@ CPLFree(pszTmpPath); return pszFname; - -#endif } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/csw/ogrcswdataset.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/csw/ogrcswdataset.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/csw/ogrcswdataset.cpp 2018-12-14 21:38:18.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/csw/ogrcswdataset.cpp 2019-06-28 11:11:45.000000000 +0000 @@ -33,7 +33,7 @@ #include "ogr_p.h" #include "gmlutils.h" -CPL_CVSID("$Id: ogrcswdataset.cpp 7e07230bbff24eb333608de4dbd460b7312839d0 2017-12-11 19:08:47Z Even Rouault $") +CPL_CVSID("$Id: ogrcswdataset.cpp f1d785028e10e61f2bb36dccebf5087264739296 2019-01-31 11:14:54 +0100 Even Rouault $") extern "C" void RegisterOGRCSW(); @@ -595,13 +595,16 @@ FALSE, 0, 0, false, true, false ); - bool bLatLongOrder = true; - if( !osSRS.empty() ) - bLatLongOrder = GML_IsSRSLatLongOrder(osSRS); - if( bLatLongOrder && CPLTestBool( - CPLGetConfigOption("GML_INVERT_AXIS_ORDER_IF_LAT_LONG", "YES")) ) - poGeom->swapXY(); - poFeature->SetGeometryDirectly(poGeom); + if( poGeom ) + { + bool bLatLongOrder = true; + if( !osSRS.empty() ) + bLatLongOrder = GML_IsSRSLatLongOrder(osSRS); + if( bLatLongOrder && CPLTestBool( + CPLGetConfigOption("GML_INVERT_AXIS_ORDER_IF_LAT_LONG", "YES")) ) + poGeom->swapXY(); + poFeature->SetGeometryDirectly(poGeom); + } } psIter->psNext = psNext; diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/dxf/ogrdxfwriterds.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/dxf/ogrdxfwriterds.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/dxf/ogrdxfwriterds.cpp 2018-12-14 21:38:26.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/dxf/ogrdxfwriterds.cpp 2019-06-28 11:11:28.000000000 +0000 @@ -38,7 +38,7 @@ #include "cpl_vsi_error.h" -CPL_CVSID("$Id: ogrdxfwriterds.cpp 52fbbb84e1d10091b99b4eb4d3009c94dd8d108d 2018-03-12 21:30:09Z Even Rouault $") +CPL_CVSID("$Id: ogrdxfwriterds.cpp 0b3f983b8a20e9c6b19aa785257c845a03a7a5dc 2019-03-10 15:09:44 +0100 Even Rouault $") /************************************************************************/ /* OGRDXFWriterDS() */ @@ -583,18 +583,19 @@ /* -------------------------------------------------------------------- */ /* Copy the remainder of the file. */ /* -------------------------------------------------------------------- */ + bool ret = true; while( (nCode = oReader.ReadValue( szLineBuf, sizeof(szLineBuf) )) != -1 ) { if( !WriteValue( fpOut, nCode, szLineBuf ) ) { - VSIFCloseL( fp ); - return false; + ret = false; + break; } } VSIFCloseL( l_fp ); - return true; + return ret; } /************************************************************************/ diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/elastic/ogrelasticdatasource.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/elastic/ogrelasticdatasource.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/elastic/ogrelasticdatasource.cpp 2018-12-14 21:38:27.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/elastic/ogrelasticdatasource.cpp 2019-06-28 11:11:20.000000000 +0000 @@ -35,7 +35,7 @@ #include "ogrgeojsonreader.h" #include "swq.h" -CPL_CVSID("$Id: ogrelasticdatasource.cpp 0143e15c994333ffb95ba270d113ce300661c970 2018-08-10 15:17:07 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrelasticdatasource.cpp 6f18213f88816a0a39d40b86cb7ec7ccbe55c979 2019-06-10 13:39:10Z jbo-ads $") /************************************************************************/ /* OGRElasticDataSource() */ @@ -228,7 +228,7 @@ } for( auto& poLayer: m_apoLayers ) { - if( EQUAL( poLayer->GetName(), pszName) ) + if( EQUAL( poLayer->GetIndexName(), pszName) ) { return poLayer.get(); } @@ -468,7 +468,7 @@ } } - CPLString osMappingURL(CPLSPrintf("%s/%s/%s/_mapping", + CPLString osMappingURL(CPLSPrintf("%s/%s/_mapping/%s", GetURL(), osLaunderedName.c_str(), pszMappingName)); if( !UploadFile(osMappingURL, osLayerMapping.c_str()) ) { @@ -532,6 +532,8 @@ { papszOptions = CSLSetNameValue(papszOptions, "POSTFIELDS", pszPostContent); + papszOptions = CSLAddNameValue(papszOptions, "HEADERS", + "Content-Type: application/json; charset=UTF-8"); } CPLPushErrorHandler(CPLQuietErrorHandler); @@ -717,11 +719,10 @@ } else { - papszOptions = CSLAddNameValue(papszOptions, "POSTFIELDS", data.c_str()); + papszOptions = CSLAddNameValue(papszOptions, "HEADERS", + "Content-Type: application/json; charset=UTF-8"); } - papszOptions = CSLAddNameValue(papszOptions, "HEADERS", - "Content-Type: application/json; charset=UTF-8"); CPLHTTPResult* psResult = HTTPFetch(url, papszOptions); CSLDestroy(papszOptions); diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/elastic/ogrelasticlayer.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/elastic/ogrelasticlayer.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/elastic/ogrelasticlayer.cpp 2018-12-14 21:38:27.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/elastic/ogrelasticlayer.cpp 2019-06-28 11:11:20.000000000 +0000 @@ -42,7 +42,7 @@ #include #include -CPL_CVSID("$Id: ogrelasticlayer.cpp 9110b1822d0ec4b625c2893ed15e50a7cf5f28b1 2018-08-10 16:25:24 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrelasticlayer.cpp d1fbcf9f2c25f9cd9ac444761cde8c7b39338fc2 2019-06-10 15:16:26 -0700 Nick Peihl $") /************************************************************************/ /* OGRElasticLayer() */ @@ -1667,7 +1667,8 @@ if( bAddGeoJSONType ) { json_object *geometry = AppendGroup(poContainer, pszLastComponent); - json_object_object_add(geometry, "type", AddPropertyMap("string")); + json_object_object_add(geometry, "type", AddPropertyMap( + m_poDS->m_nMajorVersion >= 5 ? "text" : "string")); json_object_object_add(geometry, "coordinates", geo_point); } else @@ -1944,7 +1945,7 @@ if( m_osWriteMapFilename.empty() && m_bSerializeMapping ) { m_bSerializeMapping = false; - if( !m_poDS->UploadFile(CPLSPrintf("%s/%s/%s/_mapping", m_poDS->GetURL(), m_osIndexName.c_str(), m_osMappingName.c_str()), BuildMap()) ) + if( !m_poDS->UploadFile(CPLSPrintf("%s/%s/_mapping/%s", m_poDS->GetURL(), m_osIndexName.c_str(), m_osMappingName.c_str()), BuildMap()) ) { return OGRERR_FAILURE; } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/generic/makefile.vc gdal-2.4.2+dfsg/ogr/ogrsf_frmts/generic/makefile.vc --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/generic/makefile.vc 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/generic/makefile.vc 2019-06-28 11:09:59.000000000 +0000 @@ -13,7 +13,7 @@ !IFDEF INCLUDE_OGR_FRMTS -BASEFORMATS = -DSHAPE_ENABLED -DTAB_ENABLED -DNTF_ENABLED -DSDTS_ENABLED -DTIGER_ENABLED -DS57_ENABLED -DDGN_ENABLED -DVRT_ENABLED -DAVCBIN_ENABLED -DREC_ENABLED -DMEM_ENABLED -DCSV_ENABLED -DGML_ENABLED -DGMT_ENABLED -DBNA_ENABLED -DKML_ENABLED -DGEOJSON_ENABLED -DGPX_ENABLED -DGEOCONCEPT_ENABLED -DXPLANE_ENABLED -DGEORSS_ENABLED -DGTM_ENABLED -DDXF_ENABLED -DPGDUMP_ENABLED -DGPSBABEL_ENABLED -DSUA_ENABLED -DOPENAIR_ENABLED -DPDS_ENABLED -DHTF_ENABLED -DAERONAVFAA_ENABLED -DEDIGEO_ENABLED -DSVG_ENABLED -DIDRISI_ENABLED -DARCGEN_ENABLED -DSEGUKOOA_ENABLED -DSEGY_ENABLED -DSXF_ENABLED -DOPENFILEGDB_ENABLED -DWASP_ENABLED -DSELAFIN_ENABLED -DJML_ENABLED -DVDV_ENABLED -DCAD_ENABLED -DMVT_ENABLED -DNGW_ENABLED +BASEFORMATS = -DSHAPE_ENABLED -DTAB_ENABLED -DNTF_ENABLED -DSDTS_ENABLED -DTIGER_ENABLED -DS57_ENABLED -DDGN_ENABLED -DVRT_ENABLED -DAVCBIN_ENABLED -DREC_ENABLED -DMEM_ENABLED -DCSV_ENABLED -DGML_ENABLED -DGMT_ENABLED -DBNA_ENABLED -DKML_ENABLED -DGEOJSON_ENABLED -DGPX_ENABLED -DGEOCONCEPT_ENABLED -DXPLANE_ENABLED -DGEORSS_ENABLED -DGTM_ENABLED -DDXF_ENABLED -DPGDUMP_ENABLED -DGPSBABEL_ENABLED -DSUA_ENABLED -DOPENAIR_ENABLED -DPDS_ENABLED -DHTF_ENABLED -DAERONAVFAA_ENABLED -DEDIGEO_ENABLED -DSVG_ENABLED -DIDRISI_ENABLED -DARCGEN_ENABLED -DSEGUKOOA_ENABLED -DSEGY_ENABLED -DSXF_ENABLED -DOPENFILEGDB_ENABLED -DWASP_ENABLED -DSELAFIN_ENABLED -DJML_ENABLED -DVDV_ENABLED -DCAD_ENABLED -DMVT_ENABLED EXTRAFLAGS = -I.. -I..\.. $(OGDIDEF) $(FMEDEF) $(OCIDEF) $(PGDEF) \ $(ODBCDEF) $(SQLITEDEF) $(MYSQLDEF) $(ILIDEF) $(DWGDEF) \ @@ -21,7 +21,7 @@ $(LIBKMLDEF) $(WFSDEF) $(SOSIDEF) $(GFTDEF) \ $(COUCHDBDEF) $(CLOUDANTDEF) $(FGDBDEF) $(XLSDEF) $(ODSDEF) $(XLSXDEF) $(INGRESDEF) \ $(ELASTICDEF) $(OSMDEF) $(VFKDEF) $(CARTODEF) $(AMIGOCLOUDDEF) $(PLSCENESDEF) $(CSWDEF) $(MONGODBDEF) \ - $(GMLASDEF) + $(GMLASDEF) $(NGWDEF) !IFDEF OGDIDIR OGDIDEF = -DOGDI_ENABLED @@ -161,6 +161,10 @@ PLSCENESDEF = -DPLSCENES_ENABLED !ENDIF +!IFDEF CURL_LIB +NGWDEF = -DNGW_ENABLED +!ENDIF + !IFDEF MONGODB_INC !IF "$(MONGODB_PLUGIN)" != "YES" MONGODBDEF = -DMONGODB_ENABLED diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogr_geojson.h gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogr_geojson.h --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogr_geojson.h 2018-12-14 21:38:39.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogr_geojson.h 2019-06-28 11:11:41.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: ogr_geojson.h 22f8ae3bf7bc3cccd970992655c63fc5254d3206 2018-04-08 20:13:05 +0200 Even Rouault $ + * $Id: ogr_geojson.h 66a3ed688ea086f5d967ff87afce1aff0c08e482 2019-06-27 22:53:04 +0200 Even Rouault $ * * Project: OpenGIS Simple Features Reference Implementation * Purpose: Definitions of OGR OGRGeoJSON driver types. @@ -113,6 +113,7 @@ bool bUpdated_; bool bOriginalIdModified_; GIntBig nTotalFeatureCount_; + GIntBig nFeatureReadSinceReset_ = 0; GIntBig nNextFID_; bool IngestAll(); diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonlayer.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonlayer.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonlayer.cpp 2018-12-14 21:38:39.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonlayer.cpp 2019-06-28 11:11:41.000000000 +0000 @@ -48,7 +48,7 @@ #include "ogr_geojson.h" #include "ogrgeojsonreader.h" -CPL_CVSID("$Id: ogrgeojsonlayer.cpp 287413caabcca722a41a2f74f819e5b03e44ed21 2018-09-16 15:01:08 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrgeojsonlayer.cpp 66a3ed688ea086f5d967ff87afce1aff0c08e482 2019-06-27 22:53:04 +0200 Even Rouault $") /************************************************************************/ /* STATIC MEMBERS DEFINITION */ @@ -128,6 +128,7 @@ void OGRGeoJSONLayer::ResetReading() { + nFeatureReadSinceReset_ = 0; if( poReader_ ) { TerminateAppendSession(); @@ -165,6 +166,7 @@ && (m_poAttrQuery == nullptr || m_poAttrQuery->Evaluate(poFeature)) ) { + nFeatureReadSinceReset_ ++; return poFeature; } delete poFeature; @@ -172,7 +174,12 @@ } else { - return OGRMemLayer::GetNextFeature(); + auto ret = OGRMemLayer::GetNextFeature(); + if( ret ) + { + nFeatureReadSinceReset_ ++; + } + return ret; } } @@ -205,6 +212,10 @@ { if( poReader_ ) { + if( !IsUpdatable() ) + { + return poReader_->GetFeature(this, nFID); + } return OGRLayer::GetFeature(nFID); } else @@ -244,8 +255,15 @@ OGRErr OGRGeoJSONLayer::ISetFeature( OGRFeature *poFeature ) { - if( !IsUpdatable() || !IngestAll() ) + if( !IsUpdatable() ) return OGRERR_FAILURE; + if( poReader_ ) + { + auto nNextIndex = nFeatureReadSinceReset_; + if( !IngestAll() ) + return OGRERR_FAILURE; + SetNextByIndex(nNextIndex); + } return OGRMemLayer::ISetFeature(poFeature); } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.cpp 2018-12-14 21:38:39.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.cpp 2019-06-28 11:11:35.000000000 +0000 @@ -41,7 +41,7 @@ #include "cpl_json_streaming_parser.h" #include -CPL_CVSID("$Id: ogrgeojsonreader.cpp a965bda62acdb21b5ac3e5291f84cdadcbeb4b05 2018-11-22 12:39:10 +0100 Even Rouault $") +CPL_CVSID("$Id: ogrgeojsonreader.cpp d6c38adfa28f75da0630f3e3ac26dbb501fc361e 2019-02-07 21:58:05 +0100 Even Rouault $") static OGRGeometry* OGRGeoJSONReadGeometry( json_object* poObj, @@ -102,6 +102,9 @@ std::vector m_apoFeatures; size_t m_nCurFeatureIdx; + bool m_bStartFeature = false; + bool m_bEndFeature = false; + void AppendObject(json_object* poNewObj); void AnalyzeFeature(); void TooComplex(); @@ -132,10 +135,14 @@ OGRFeature* GetNextFeature(); json_object* StealRootObject(); - bool IsTypeKnown() const { return m_bIsTypeKnown; } - bool IsFeatureCollection() const { return m_bIsFeatureCollection; } - GUIntBig GetTotalOGRFeatureMemEstimate() const { return m_nTotalOGRFeatureMemEstimate; } - bool CanEasilyAppend() const { return m_bCanEasilyAppend; } + inline bool IsTypeKnown() const { return m_bIsTypeKnown; } + inline bool IsFeatureCollection() const { return m_bIsFeatureCollection; } + inline GUIntBig GetTotalOGRFeatureMemEstimate() const { return m_nTotalOGRFeatureMemEstimate; } + inline bool CanEasilyAppend() const { return m_bCanEasilyAppend; } + + inline void ResetFeatureDetectionState() { m_bStartFeature = false; m_bEndFeature = false; } + inline bool IsStartFeature() const { return m_bStartFeature; } + inline bool IsEndFeature() const { return m_bEndFeature; } }; @@ -409,6 +416,7 @@ m_osJson = "{"; m_abFirstMember.push_back(true); } + m_bStartFeature = true; } else if( m_poCurObj ) { @@ -490,6 +498,7 @@ m_nTotalOGRFeatureMemEstimate += sizeof(OGRFeature); m_osJson.clear(); m_abFirstMember.clear(); + m_bEndFeature = true; } else if( m_poCurObj ) { @@ -1105,6 +1114,123 @@ } /************************************************************************/ +/* GetFeature() */ +/************************************************************************/ + +OGRFeature* OGRGeoJSONReader::GetFeature(OGRGeoJSONLayer* poLayer, GIntBig nFID) +{ + CPLAssert( fp_ ); + + if( oMapFIDToOffsetSize_.empty() ) + { + CPLDebug("GeoJSON", "Establishing index to features for first GetFeature() call"); + + delete poStreamingParser_; + poStreamingParser_ = nullptr; + + OGRGeoJSONReaderStreamingParser oParser(*this, poLayer, false, bStoreNativeData_); + VSIFSeekL(fp_, 0, SEEK_SET); + bFirstSeg_ = true; + bJSonPLikeWrapper_ = false; + vsi_l_offset nCurOffset = 0; + vsi_l_offset nFeatureOffset = 0; + GIntBig nSeqFID = 0; + while( true ) + { + size_t nRead = VSIFReadL(pabyBuffer_, 1, nBufferSize_, fp_); + const bool bFinished = nRead < nBufferSize_; + size_t nSkip = 0; + if( bFirstSeg_ ) + { + bFirstSeg_ = false; + nSkip = SkipPrologEpilogAndUpdateJSonPLikeWrapper(nRead); + } + if( bFinished && bJSonPLikeWrapper_ && nRead - nSkip > 0 ) + nRead --; + auto pszPtr = reinterpret_cast(pabyBuffer_ + nSkip); + for( size_t i = 0; i < nRead - nSkip; i++ ) + { + oParser.ResetFeatureDetectionState(); + if( !oParser.Parse( pszPtr + i, + 1, bFinished && (i + 1 == nRead - nSkip) ) || + oParser.ExceptionOccurred() ) + { + return nullptr; + } + if( oParser.IsStartFeature() ) + { + nFeatureOffset = nCurOffset + i; + } + else if( oParser.IsEndFeature() ) + { + vsi_l_offset nFeatureSize = (nCurOffset + i) - nFeatureOffset + 1; + auto poFeat = oParser.GetNextFeature(); + if( poFeat ) + { + GIntBig nThisFID = poFeat->GetFID(); + if( nThisFID < 0 ) + { + nThisFID = nSeqFID; + nSeqFID++; + } + if( oMapFIDToOffsetSize_.find(nThisFID) == oMapFIDToOffsetSize_.end() ) + { + oMapFIDToOffsetSize_[nThisFID] = + std::pair(nFeatureOffset, nFeatureSize); + } + delete poFeat; + } + } + } + + if( bFinished ) + break; + nCurOffset += nRead; + } + } + + auto oIter = oMapFIDToOffsetSize_.find(nFID); + if( oIter == oMapFIDToOffsetSize_.end() ) + { + return nullptr; + } + + VSIFSeekL(fp_, oIter->second.first, SEEK_SET); + if( oIter->second.second > 1000 * 1000 * 1000 ) + { + return nullptr; + } + size_t nSize = static_cast(oIter->second.second); + char* pszBuffer = static_cast(VSIMalloc(nSize + 1)); + if( !pszBuffer ) + { + return nullptr; + } + if( VSIFReadL(pszBuffer, 1, nSize, fp_) != nSize ) + { + VSIFree(pszBuffer); + return nullptr; + } + pszBuffer[nSize] = 0; + json_object* poObj = nullptr; + if( !OGRJSonParse(pszBuffer, &poObj) ) + { + VSIFree(pszBuffer); + return nullptr; + } + + OGRFeature* poFeat = ReadFeature(poLayer, poObj, pszBuffer); + json_object_put(poObj); + VSIFree(pszBuffer); + if( !poFeat ) + { + return nullptr; + } + poFeat->SetFID(nFID); + return poFeat; +} + +/************************************************************************/ /* IngestAll() */ /************************************************************************/ diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.h gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.h --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.h 2018-12-14 21:38:39.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonreader.h 2019-06-28 11:11:41.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: ogrgeojsonreader.h 7a3bb02b40a63eb355bb77d020bce8c55a1d04ed 2018-09-18 08:34:01 +0200 Even Rouault $ + * $Id: ogrgeojsonreader.h d6c38adfa28f75da0630f3e3ac26dbb501fc361e 2019-02-07 21:58:05 +0100 Even Rouault $ * * Project: OpenGIS Simple Features Reference Implementation * Purpose: Defines GeoJSON reader within OGR OGRGeoJSON Driver. @@ -37,6 +37,7 @@ #include "ogrgeojsonutils.h" +#include #include /************************************************************************/ @@ -160,6 +161,7 @@ void ResetReading(); OGRFeature* GetNextFeature(OGRGeoJSONLayer* poLayer); + OGRFeature* GetFeature(OGRGeoJSONLayer* poLayer, GIntBig nFID); bool IngestAll(OGRGeoJSONLayer* poLayer); VSILFILE* GetFP() { return fp_; } @@ -182,6 +184,8 @@ GIntBig nTotalFeatureCount_; GUIntBig nTotalOGRFeatureMemEstimate_; + + std::map> oMapFIDToOffsetSize_; // // Copy operations not supported. // diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonseqdriver.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonseqdriver.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonseqdriver.cpp 2018-12-14 21:38:39.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonseqdriver.cpp 2019-06-28 11:11:41.000000000 +0000 @@ -37,7 +37,7 @@ #include #include -CPL_CVSID("$Id: ogrgeojsonseqdriver.cpp 287413caabcca722a41a2f74f819e5b03e44ed21 2018-09-16 15:01:08 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrgeojsonseqdriver.cpp 973bec94b048e9fde5dadf5afcdbf79d10b2142e 2019-03-17 16:04:54 +0100 Even Rouault $") constexpr char RS = '\x1e'; @@ -394,6 +394,7 @@ { json_object* poObject = nullptr; OGRJSonParse(m_osFeatureBuffer.c_str(), &poObject); + m_osFeatureBuffer.clear(); if( json_object_get_type(poObject) == json_type_object ) { return poObject; diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonutils.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonutils.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonutils.cpp 2018-12-14 21:38:39.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/geojson/ogrgeojsonutils.cpp 2019-06-28 11:11:35.000000000 +0000 @@ -36,7 +36,7 @@ #include #include -CPL_CVSID("$Id: ogrgeojsonutils.cpp 287413caabcca722a41a2f74f819e5b03e44ed21 2018-09-16 15:01:08 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrgeojsonutils.cpp dfe7b7f0e0d26c3895c6750c3badac958792bac4 2019-05-18 18:42:43 -0500 Even Rouault $") const char szESRIJSonPotentialStart1[] = "{\"features\":[{\"geometry\":{\"rings\":["; @@ -172,13 +172,21 @@ return true; } - CPLString osWithoutSpace = GetCompactJSon(pszText, - strlen(szESRIJSonPotentialStart1)); + CPLString osWithoutSpace = GetCompactJSon(pszText, strlen(pszText)); if( osWithoutSpace.find("{\"features\":[") == 0 && osWithoutSpace.find(szESRIJSonPotentialStart1) != 0 ) { if( pbMightBeSequence ) *pbMightBeSequence = false; + return true; + } + + // See https://raw.githubusercontent.com/icepack/icepack-data/master/meshes/larsen/larsen_inflow.geojson + if( osWithoutSpace.find("{\"crs\":{") == 0 && + osWithoutSpace.find(",\"features\":[") != std::string::npos ) + { + if( pbMightBeSequence ) + *pbMightBeSequence = false; return true; } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gml/drv_gml.html gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gml/drv_gml.html --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gml/drv_gml.html 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gml/drv_gml.html 2019-06-28 11:09:59.000000000 +0000 @@ -379,8 +379,8 @@ be declared as not-nullable if the application schema declared them as mandatory. So this option can be set to NO to have both empty strings being report as such, and mandatory fields being reported as not nullable. -
  • GML_ATTRIBUTES_TO_OGR_FIELDS=YES/NO: (GDAL >=2.0) Whether GM -Lattributes should be reported as OGR fields. Note that this option has only an +
  • GML_ATTRIBUTES_TO_OGR_FIELDS=YES/NO: (GDAL >=2.0) Whether GML +attributes should be reported as OGR fields. Note that this option has only an effect the first time a GML file is opened (before the .gfs file is created), and if it has no valid associated .xsd. Defaults to NO.
  • INVERT_AXIS_ORDER_IF_LAT_LONG=YES/NO: (GDAL >=2.0) Whether to diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gml/gmlreader.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gml/gmlreader.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gml/gmlreader.cpp 2018-12-14 21:38:41.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gml/gmlreader.cpp 2019-06-28 11:12:06.000000000 +0000 @@ -35,6 +35,7 @@ #include #include #include +#include #include #include "cpl_conv.h" @@ -44,7 +45,7 @@ #include "gmlutils.h" #include "ogr_geometry.h" -CPL_CVSID("$Id: gmlreader.cpp 7063b8664855306154d97a05b35c968c8d8b81d0 2018-05-09 21:24:13 +0200 Even Rouault $") +CPL_CVSID("$Id: gmlreader.cpp a43362ee372a657ec2714e9beb8945271c359b67 2019-01-17 17:37:18 +0100 Even Rouault $") /************************************************************************/ /* ~IGMLReader() */ @@ -1317,10 +1318,20 @@ } GMLFeature *poFeature = nullptr; + std::set knownClasses; while( (poFeature = NextFeature()) != nullptr ) { GMLFeatureClass *poClass = poFeature->GetClass(); + if( knownClasses.find(poClass) == knownClasses.end() ) + { + knownClasses.insert(poClass); + if( m_pszGlobalSRSName && GML_IsLegitSRSName(m_pszGlobalSRSName) ) + { + poClass->SetSRSName(m_pszGlobalSRSName); + } + } + if (poLastClass != nullptr && poClass != poLastClass && poClass->GetFeatureCount() != -1) m_nHasSequentialLayers = false; @@ -1359,9 +1370,15 @@ GML_ExtractSrsNameFromGeometry(papsGeometry, osWork, m_bConsiderEPSGAsURN); - if (pszSRSName != nullptr) + if (pszSRSName != nullptr && m_pszGlobalSRSName != nullptr && + !EQUAL(pszSRSName, m_pszGlobalSRSName)) + { m_bCanUseGlobalSRSName = false; - poClass->MergeSRSName(pszSRSName); + } + if( m_pszGlobalSRSName == nullptr || pszSRSName != nullptr) + { + poClass->MergeSRSName(pszSRSName); + } } // Merge geometry type into layer. @@ -1414,10 +1431,6 @@ { GMLFeatureClass *poClass = m_papoClass[i]; const char* pszSRSName = poClass->GetSRSName(); - - if (m_bCanUseGlobalSRSName) - pszSRSName = m_pszGlobalSRSName; - if( pszSRSName != nullptr && !GML_IsLegitSRSName(pszSRSName) ) { continue; diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gml/parsexsd.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gml/parsexsd.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gml/parsexsd.cpp 2018-12-14 21:38:42.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gml/parsexsd.cpp 2019-06-28 11:12:07.000000000 +0000 @@ -42,7 +42,7 @@ #include "cpl_string.h" #include "ogr_core.h" -CPL_CVSID("$Id: parsexsd.cpp 8bc4f24bf7b78424cfd0df089a3cc0542d4e110e 2018-01-26 12:14:28Z Even Rouault $") +CPL_CVSID("$Id: parsexsd.cpp 318629fa6a95bb134d5b0c0f96b6c29c77492743 2019-03-19 17:27:36 +0100 Even Rouault $") /************************************************************************/ /* StripNS() */ @@ -451,6 +451,9 @@ gmlType = GMLPT_Short; else if (EQUAL(pszStrippedNSType, "boolean") ) gmlType = GMLPT_Boolean; + // TODO: Would be nice to have a binary type. + else if (EQUAL(pszStrippedNSType, "hexBinary")) + gmlType = GMLPT_String; else if (strcmp(pszType, "gml:FeaturePropertyType") == 0 ) { gmlType = GMLPT_FeatureProperty; @@ -1048,7 +1051,8 @@ else if( !EQUALN(pszType, pszName, strlen(pszName)) || !(EQUAL(pszType + strlen(pszName), "_Type") || - EQUAL(pszType + strlen(pszName), "Type")) ) + EQUAL(pszType + strlen(pszName), "Type") || + EQUAL(pszType + strlen(pszName), "FeatureType")) ) { continue; } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gmlas/ogrgmlasdatasource.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gmlas/ogrgmlasdatasource.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gmlas/ogrgmlasdatasource.cpp 2018-12-14 21:38:43.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gmlas/ogrgmlasdatasource.cpp 2019-06-28 11:11:17.000000000 +0000 @@ -36,7 +36,7 @@ #include -CPL_CVSID("$Id: ogrgmlasdatasource.cpp 0b629564aaf603602a76d48b0d0e1e501727ad59 2017-12-17 20:55:57Z Even Rouault $") +CPL_CVSID("$Id: ogrgmlasdatasource.cpp fb7b64fcc6201cf7750714758ae6ce13cf4592a0 2019-04-17 22:56:53 +0200 Even Rouault $") /************************************************************************/ /* OGRGMLASDataSource() */ @@ -681,7 +681,7 @@ const CPLString& osXSDFilenames) { std::vector aoXSDs; - char** papszTokens = CSLTokenizeString2(osXSDFilenames," ,",0); + char** papszTokens = CSLTokenizeString2(osXSDFilenames, ",", 0); char* pszCurDir = CPLGetCurrentDir(); for( int i=0; papszTokens != nullptr && papszTokens[i] != nullptr; i++ ) { diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gmlas/ogrgmlasschemaanalyzer.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gmlas/ogrgmlasschemaanalyzer.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gmlas/ogrgmlasschemaanalyzer.cpp 2018-12-14 21:38:44.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gmlas/ogrgmlasschemaanalyzer.cpp 2019-06-28 11:11:17.000000000 +0000 @@ -41,7 +41,7 @@ #include "ogr_gmlas.h" #include "ogr_pgdump.h" -CPL_CVSID("$Id: ogrgmlasschemaanalyzer.cpp 54e3273cb47a552d04cfe22b4ffc791db49b474e 2018-04-17 14:20:21 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrgmlasschemaanalyzer.cpp 4632051ede3102b99efb2d80c7917e12ff1fdada 2019-04-14 22:55:27 +0200 Even Rouault $") static OGRwkbGeometryType GetOGRGeometryType( XSTypeDefinition* poTypeDef ); @@ -1002,17 +1002,21 @@ { bool bSimpleEnoughOut = true; int nSubCountSubEltOut = 0; - FindElementsWithMustBeToLevel( - osXPath, - poCT->getParticle()->getModelGroupTerm(), - 0, - oSetVisitedEltDecl, - oSetVisitedModelGroups, - oVectorEltsForTopClass, - aoSetXPathEltsForTopClass, - poModel, - bSimpleEnoughOut, - nSubCountSubEltOut ); + auto poParticle = poCT->getParticle(); + if( poParticle ) + { + FindElementsWithMustBeToLevel( + osXPath, + poParticle->getModelGroupTerm(), + 0, + oSetVisitedEltDecl, + oSetVisitedModelGroups, + oVectorEltsForTopClass, + aoSetXPathEltsForTopClass, + poModel, + bSimpleEnoughOut, + nSubCountSubEltOut ); + } } } } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gmt/ogrgmtdriver.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gmt/ogrgmtdriver.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gmt/ogrgmtdriver.cpp 2018-12-14 21:38:45.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gmt/ogrgmtdriver.cpp 2019-06-28 11:12:01.000000000 +0000 @@ -30,7 +30,7 @@ #include "cpl_conv.h" #include "cpl_string.h" -CPL_CVSID("$Id: ogrgmtdriver.cpp b73bd61268d34090f6dbccd2e4297c23ec84a7f2 2018-03-31 13:55:05 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrgmtdriver.cpp f30026ec9bad0bbb4c243cb6aee6219e9eb39340 2019-04-19 22:20:14 +0200 Even Rouault $") /************************************************************************/ /* OGRGMTDriverIdentify() */ @@ -39,9 +39,14 @@ static int OGRGMTDriverIdentify( GDALOpenInfo *poOpenInfo ) { - return poOpenInfo->nHeaderBytes && - strstr(reinterpret_cast(poOpenInfo->pabyHeader), - "@VGMT") != nullptr; + const char* pszHeader = reinterpret_cast(poOpenInfo->pabyHeader); + if( poOpenInfo->nHeaderBytes && strstr(pszHeader, "@VGMT") != nullptr ) + return true; + + if( EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "GMT") ) + return true; + + return false; } /************************************************************************/ diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gpkg/gdalgeopackagerasterband.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gpkg/gdalgeopackagerasterband.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gpkg/gdalgeopackagerasterband.cpp 2018-12-14 21:38:45.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gpkg/gdalgeopackagerasterband.cpp 2019-06-28 11:11:51.000000000 +0000 @@ -34,7 +34,7 @@ #include #include -CPL_CVSID("$Id: gdalgeopackagerasterband.cpp 17d3e07a485cc762ef4e5803ac2a0d01797a67d1 2018-06-22 20:07:31 +0200 Even Rouault $") +CPL_CVSID("$Id: gdalgeopackagerasterband.cpp bdab2fffb0d9a2518458ba5bba5ca0b3db71f759 2019-03-19 02:56:07Z Chris Tapley $") #if !defined(DEBUG_VERBOSE) && defined(DEBUG_VERBOSE_GPKG) #define DEBUG_VERBOSE @@ -942,6 +942,14 @@ VSIUnlink(osMemFileName); sqlite3_finalize(hStmt); } + else if( rc == SQLITE_BUSY ) + { + FillEmptyTile(pabyData); + CPLError( CE_Failure, CPLE_AppDefined, "sqlite3_step(%s) failed (SQLITE_BUSY): %s", + sqlite3_sql( hStmt ), sqlite3_errmsg( IGetDB() ) ); + sqlite3_finalize(hStmt); + return pabyData; + } else { sqlite3_finalize( hStmt ); diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp 2018-12-14 21:38:45.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp 2019-06-28 11:11:51.000000000 +0000 @@ -39,7 +39,7 @@ #include -CPL_CVSID("$Id: ogrgeopackagedatasource.cpp 14787d4dc99b60b85c305b08e4424a51abb27f9a 2018-11-21 19:44:02 +0100 Even Rouault $") +CPL_CVSID("$Id: ogrgeopackagedatasource.cpp 3e8c17791dd8141ae572ebec5b80ad69217d0320 2019-05-06 22:46:12 +0200 Even Rouault $") // Keep in sync prototype of those 2 functions between gdalopeninfo.cpp, // ogrsqlitedatasource.cpp and ogrgeopackagedatasource.cpp @@ -979,13 +979,13 @@ /* Requirement 7: The SQLite PRAGMA foreign_key_check() SQL with no */ /* parameter value SHALL return an empty result set */ /* http://opengis.github.io/geopackage/#_file_integrity */ - if ( CPLTestBool(CPLGetConfigOption("OGR_GPKG_FOREIGN_KEY_CHECK", "YES")) && + /* Disable the check by default, since it is to corrupt databases, and */ + /* that causes issues to downstream software that can't open them. */ + if ( CPLTestBool(CPLGetConfigOption("OGR_GPKG_FOREIGN_KEY_CHECK", "NO")) && OGRERR_NONE != PragmaCheck("foreign_key_check", "", 0) ) { CPLError( CE_Failure, CPLE_AppDefined, - "pragma foreign_key_check on '%s' failed. You can disable " - "this check by setting the OGR_GPKG_FOREIGN_KEY_CHECK " - "configuration option to NO", + "pragma foreign_key_check on '%s' failed.", m_pszFilename); return FALSE; } @@ -1694,14 +1694,12 @@ m_bRecordInsertedInGPKGContent = true; m_nSRID = nSRSId; - if( nSRSId > 0 ) + + OGRSpatialReference* poSRS = GetSpatialRef( nSRSId ); + if( poSRS ) { - OGRSpatialReference* poSRS = GetSpatialRef( nSRSId ); - if( poSRS ) - { - poSRS->exportToWkt(&m_pszProjection); - poSRS->Release(); - } + poSRS->exportToWkt(&m_pszProjection); + poSRS->Release(); } /* Various sanity checks added in the SELECT */ diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gpkg/ogrgeopackagetablelayer.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gpkg/ogrgeopackagetablelayer.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/gpkg/ogrgeopackagetablelayer.cpp 2018-12-14 21:38:45.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/gpkg/ogrgeopackagetablelayer.cpp 2019-06-28 11:11:50.000000000 +0000 @@ -33,7 +33,7 @@ #include "cpl_time.h" #include "ogr_p.h" -CPL_CVSID("$Id: ogrgeopackagetablelayer.cpp 71134e6ee371423d833364de9410e82107efd88d 2018-12-03 22:31:05 +0100 Even Rouault $") +CPL_CVSID("$Id: ogrgeopackagetablelayer.cpp a3b907162c4c003960c32e0fcb8f0850c790ce49 2019-05-21 22:10:19 +0200 Even Rouault $") static const char UNSUPPORTED_OP_READ_ONLY[] = "%s : unsupported operation on a read-only datasource."; @@ -55,8 +55,8 @@ char *pszSQL = sqlite3_mprintf( "UPDATE gpkg_contents SET " - "min_x = %g, min_y = %g, " - "max_x = %g, max_y = %g " + "min_x = %.18g, min_y = %.18g, " + "max_x = %.18g, max_y = %.18g " "WHERE lower(table_name) = lower('%q') AND " "Lower(data_type) = 'features'", m_poExtent->MinX, m_poExtent->MinY, @@ -1045,8 +1045,8 @@ } } } - SQLResultFree(&oResultTable); } + SQLResultFree(&oResultTable); } /* Update the columns string */ diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mem/ogrmemlayer.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mem/ogrmemlayer.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mem/ogrmemlayer.cpp 2018-12-14 21:38:56.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mem/ogrmemlayer.cpp 2019-06-28 11:11:16.000000000 +0000 @@ -48,7 +48,7 @@ #include "ogr_spatialref.h" #include "ogrsf_frmts.h" -CPL_CVSID("$Id: ogrmemlayer.cpp 1cababff23dea05042655377173c70002f68952a 2018-03-10 19:45:14Z Even Rouault $") +CPL_CVSID("$Id: ogrmemlayer.cpp 66a3ed688ea086f5d967ff87afce1aff0c08e482 2019-06-27 22:53:04 +0200 Even Rouault $") /************************************************************************/ /* IOGRMemLayerFeatureIterator */ @@ -244,7 +244,8 @@ return OGRERR_FAILURE; // If we don't have a FID, find one available - if( poFeature->GetFID() == OGRNullFID ) + GIntBig nFID = poFeature->GetFID(); + if( nFID == OGRNullFID ) { if( m_papoFeatures != nullptr ) { @@ -261,19 +262,40 @@ m_oMapFeatures.end() ) ++m_iNextCreateFID; } - poFeature->SetFID(m_iNextCreateFID++); + nFID = m_iNextCreateFID++; + poFeature->SetFID(nFID); } - else if( poFeature->GetFID() < OGRNullFID ) + else if( nFID < OGRNullFID ) { CPLError(CE_Failure, CPLE_NotSupported, "negative FID are not supported"); return OGRERR_FAILURE; } + else + { + if( !m_bHasHoles ) + { + // If the feature does not exist, set m_bHasHoles + if( m_papoFeatures != nullptr ) + { + if( nFID >= m_nMaxFeatureCount || + m_papoFeatures[nFID] == nullptr ) + { + m_bHasHoles = true; + } + } + else + { + FeatureIterator oIter = m_oMapFeatures.find(nFID); + if( oIter == m_oMapFeatures.end() ) + m_bHasHoles = true; + } + } + } OGRFeature *poFeatureCloned = poFeature->Clone(); if( poFeatureCloned == nullptr ) return OGRERR_FAILURE; - const GIntBig nFID = poFeature->GetFID(); if( m_papoFeatures != nullptr && nFID > 100000 && nFID > m_nMaxFeatureCount + 1000 ) diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/drv_mitab.html gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/drv_mitab.html --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/drv_mitab.html 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/drv_mitab.html 2019-06-28 11:09:59.000000000 +0000 @@ -56,7 +56,7 @@

    • For a file in LAT/LON (geographic) coordinates: BOUNDS (-180, -90) (180, 90)
    • -
    • For any other projection: BOUNDS (-30000000, -15000000) (30000000, 15000000)
    • +
    • For any other projection: BOUNDS (-30000000 + false_easting, -15000000 + false_northing) (30000000 + false_easting, 15000000 + false_northing)

    diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/mitab_indfile.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/mitab_indfile.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/mitab_indfile.cpp 2018-12-14 21:38:56.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/mitab_indfile.cpp 2019-06-28 11:11:31.000000000 +0000 @@ -43,7 +43,7 @@ #include "mitab_priv.h" #include "mitab_utils.h" -CPL_CVSID("$Id: mitab_indfile.cpp 43b6061a355c4bce2283b787b28d5f3ae6b9e2af 2018-05-06 14:19:59 +0200 Even Rouault $") +CPL_CVSID("$Id: mitab_indfile.cpp 310ed3c00b15c117003a96affd0290aa04d185cb 2019-01-31 11:07:40 +0100 Even Rouault $") /*===================================================================== * class TABINDFile @@ -1045,7 +1045,7 @@ * nEntryNo is the 0-based index of the index entry that we are interested * in inside the current node. **********************************************************************/ -int TABINDNode::IndexKeyCmp(GByte *pKeyValue, int nEntryNo) +int TABINDNode::IndexKeyCmp(const GByte *pKeyValue, int nEntryNo) { CPLAssert(pKeyValue); CPLAssert(nEntryNo >= 0 && nEntryNo < m_numEntriesInNode); @@ -1117,7 +1117,14 @@ * - 0 if the key was not found * - or -1 if an error happened **********************************************************************/ -GInt32 TABINDNode::FindFirst(GByte *pKeyValue) +GInt32 TABINDNode::FindFirst(const GByte *pKeyValue) +{ + std::set oSetVisitedNodePtr; + return FindFirst(pKeyValue, oSetVisitedNodePtr); +} + +GInt32 TABINDNode::FindFirst(const GByte *pKeyValue, + std::set& oSetVisitedNodePtr) { if (m_poDataBlock == nullptr) { @@ -1255,6 +1262,19 @@ nRetValue = 0; continue; } + else if( oSetVisitedNodePtr.find(nChildNodePtr) != + oSetVisitedNodePtr.end() ) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Invalid child node pointer structure"); + return -1; + } + else if( (nChildNodePtr % 512) != 0 ) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Invalid child node pointer"); + return -1; + } else if (m_poCurChildNode == nullptr) { /* Child node has never been initialized...do it now!*/ @@ -1279,7 +1299,9 @@ return -1; } - nRetValue = m_poCurChildNode->FindFirst(pKeyValue); + oSetVisitedNodePtr.insert(nChildNodePtr); + nRetValue = m_poCurChildNode->FindFirst(pKeyValue, + oSetVisitedNodePtr); }/*for iChild*/ return nRetValue; diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/mitab_mapfile.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/mitab_mapfile.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/mitab_mapfile.cpp 2018-12-14 21:38:56.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/mitab_mapfile.cpp 2019-06-28 11:11:31.000000000 +0000 @@ -46,7 +46,7 @@ #include "mitab_priv.h" #include "ogr_feature.h" -CPL_CVSID("$Id: mitab_mapfile.cpp fd5a52b3fb25239d417f2daed64aa6f8cbe38da9 2018-09-17 14:19:33 +0200 Even Rouault $") +CPL_CVSID("$Id: mitab_mapfile.cpp 10d43e1af3eae7457ed4cdea73292a124d3d7873 2019-02-02 15:41:26 +0100 Even Rouault $") /*===================================================================== * class TABMAPFile @@ -1148,22 +1148,26 @@ **********************************************************************/ int TABMAPFile::MarkAsDeleted() { - if (m_eAccessMode == TABRead || m_poCurObjBlock == nullptr) + if (m_eAccessMode == TABRead) return -1; if ( m_nCurObjPtr <= 0 ) return 0; - /* Goto offset for object id */ - if ( m_poCurObjBlock->GotoByteInFile(m_nCurObjPtr + 1, TRUE) != 0) - return -1; + int ret = 0; + if( m_nCurObjType != TAB_GEOM_NONE ) + { + /* Goto offset for object id */ + if ( m_poCurObjBlock == nullptr || + m_poCurObjBlock->GotoByteInFile(m_nCurObjPtr + 1, TRUE) != 0) + return -1; - /* Mark object as deleted */ - m_poCurObjBlock->WriteInt32(m_nCurObjId | 0x40000000); + /* Mark object as deleted */ + m_poCurObjBlock->WriteInt32(m_nCurObjId | 0x40000000); - int ret = 0; - if( m_poCurObjBlock->CommitToFile() != 0 ) - ret = -1; + if( m_poCurObjBlock->CommitToFile() != 0 ) + ret = -1; + } /* Update index entry to reflect delete state as well */ if( m_poIdIndex->SetObjPtr(m_nCurObjId, 0) != 0 ) diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/mitab_ogr_datasource.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/mitab_ogr_datasource.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/mitab_ogr_datasource.cpp 2018-12-14 21:38:57.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/mitab_ogr_datasource.cpp 2019-06-28 11:11:30.000000000 +0000 @@ -32,7 +32,7 @@ #include "mitab_ogr_driver.h" -CPL_CVSID("$Id: mitab_ogr_datasource.cpp 43b6061a355c4bce2283b787b28d5f3ae6b9e2af 2018-05-06 14:19:59 +0200 Even Rouault $") +CPL_CVSID("$Id: mitab_ogr_datasource.cpp a2204c9540041a373d26d7419a0865260405a387 2019-02-22 18:45:11 +0100 Even Rouault $") /*======================================================================= * OGRTABDataSource @@ -414,9 +414,14 @@ if( !poFile->IsBoundsSet() && !m_bCreateMIF ) { - if( poSRSIn != nullptr && poSRSIn->GetRoot() != nullptr && - EQUAL(poSRSIn->GetRoot()->GetValue(),"GEOGCS") ) + if( poSRSIn != nullptr && poSRSIn->IsGeographic() ) poFile->SetBounds(-1000, -1000, 1000, 1000); + else if( poSRSIn != nullptr && poSRSIn->IsProjected() ) + { + const double FE = poSRSIn->GetProjParm( SRS_PP_FALSE_EASTING, 0.0 ); + const double FN = poSRSIn->GetProjParm( SRS_PP_FALSE_NORTHING, 0.0 ); + poFile->SetBounds(-30000000 + FE, -15000000 + FN, 30000000 + FE, 15000000 + FN); + } else poFile->SetBounds(-30000000, -15000000, 30000000, 15000000); } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/mitab_priv.h gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/mitab_priv.h --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mitab/mitab_priv.h 2018-12-14 21:38:57.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mitab/mitab_priv.h 2019-06-28 11:11:30.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: mitab_priv.h 73c99bf0168d92bce32cb9e76d821e17e2b8d686 2018-05-06 16:59:41 +0200 Even Rouault $ + * $Id: mitab_priv.h 310ed3c00b15c117003a96affd0290aa04d185cb 2019-01-31 11:07:40 +0100 Even Rouault $ * * Name: mitab_priv.h * Project: MapInfo TAB Read/Write library @@ -37,6 +37,8 @@ #include "cpl_string.h" #include "ogr_feature.h" +#include + class TABFile; class TABFeature; class TABMAPToolBlock; @@ -1536,7 +1538,7 @@ int GotoNodePtr(GInt32 nNewNodePtr); GInt32 ReadIndexEntry(int nEntryNo, GByte *pKeyValue); - int IndexKeyCmp(GByte *pKeyValue, int nEntryNo); + int IndexKeyCmp(const GByte *pKeyValue, int nEntryNo); int InsertEntry(GByte *pKeyValue, GInt32 nRecordNo, GBool bInsertAfterCurChild=FALSE, @@ -1544,6 +1546,8 @@ int SetNodeBufferDirectly(int numEntries, GByte *pBuf, int nCurIndexEntry=0, TABINDNode *poCurChild=nullptr); + GInt32 FindFirst(const GByte *pKeyValue, + std::set& oSetVisitedNodePtr); public: explicit TABINDNode(TABAccess eAccessMode = TABRead); @@ -1567,7 +1571,7 @@ int GetNumEntries() {return m_numEntriesInNode;} int GetMaxNumEntries() {return (512-12)/(m_nKeyLength+4);} - GInt32 FindFirst(GByte *pKeyValue); + GInt32 FindFirst(const GByte *pKeyValue); GInt32 FindNext(GByte *pKeyValue); int CommitToFile(); diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mssqlspatial/drv_mssqlspatial.html gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mssqlspatial/drv_mssqlspatial.html --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mssqlspatial/drv_mssqlspatial.html 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mssqlspatial/drv_mssqlspatial.html 2019-06-28 11:09:59.000000000 +0000 @@ -122,20 +122,23 @@ Configuration Options which help control the behavior of this driver.

    -
      -
    • MSSQLSPATIAL_USE_BCP: (From GDAL 2.1.0) Enable bulk insert when adding features. This option requires to - to compile GDAL against a bulk copy enabled ODBC driver like SQL Server Native - Client 11.0. To specify a BCP supported driver in the connection string, use the - driver parameter, like DRIVER={SQL Server Native Client 11.0}. If GDAL is - compiled against SQL Server Native Client 10.0 or 11.0 the driver is selected - automatically not requiring to specify that in the connection string. If GDAL is - compiled against SQL Server Native Client 10.0 or 11.0 the default setting of - this parameter is TRUE, otherwise the parameter is ignored by the driver.
    • -
    • MSSQLSPATIAL_BCP_SIZE: (From GDAL 2.1.0) Specifies the bulk insert batch size. The larger value makes the insert faster, but consumes more memory. Default = 1000.
    • -
    • MSSQLSPATIAL_OGR_FID: Override FID column name. Default = ogr_fid.
    • -
    • MSSQLSPATIAL_ALWAYS_OUTPUT_FID: Always return the OGR_FID column - even if it is not a true IDENTITY column - when creating features. Default = "NO".
    • -
    • MSSQLSPATIAL_USE_GEOMETRY_COLUMNS: Use/create geometry_columns metadata table in the database. Default = "YES".
    • -
    • MSSQLSPATIAL_LIST_ALL_TABLES: Use mssql catalog to list available layers. Default = "NO".
    • +
        +
      • + MSSQLSPATIAL_USE_BCP: (From GDAL 2.1.0) Enable bulk insert when adding features. This option requires to + to compile GDAL against a bulk copy enabled ODBC driver like SQL Server Native + Client 11.0. To specify a BCP supported driver in the connection string, use the + driver parameter, like DRIVER={SQL Server Native Client 11.0}. If GDAL is + compiled against SQL Server Native Client 10.0 or 11.0 the driver is selected + automatically not requiring to specify that in the connection string. If GDAL is + compiled against SQL Server Native Client 10.0 or 11.0 the default setting of + this parameter is TRUE, otherwise the parameter is ignored by the driver. +
      • +
      • MSSQLSPATIAL_BCP_SIZE: (From GDAL 2.1.0) Specifies the bulk insert batch size. The larger value makes the insert faster, but consumes more memory. Default = 1000.
      • +
      • MSSQLSPATIAL_OGR_FID: Override FID column name. Default = ogr_fid.
      • +
      • MSSQLSPATIAL_ALWAYS_OUTPUT_FID: Always retrieve the FID value of the recently created feature (even if it is not a true IDENTITY column). Default = "NO".
      • +
      • MSSQLSPATIAL_SHOW_FID_COLUMN: Force to display the FID colums as a feature attribute. Default = "NO".
      • +
      • MSSQLSPATIAL_USE_GEOMETRY_COLUMNS: Use/create geometry_columns metadata table in the database. Default = "YES".
      • +
      • MSSQLSPATIAL_LIST_ALL_TABLES: Use mssql catalog to list available layers. Default = "NO".

      Transaction support (GDAL >= 2.0)

      diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mssqlspatial/ogrmssqlspatiallayer.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mssqlspatial/ogrmssqlspatiallayer.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/mssqlspatial/ogrmssqlspatiallayer.cpp 2018-12-14 21:38:58.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/mssqlspatial/ogrmssqlspatiallayer.cpp 2019-06-28 11:11:13.000000000 +0000 @@ -28,7 +28,7 @@ #include "ogr_mssqlspatial.h" -CPL_CVSID("$Id: ogrmssqlspatiallayer.cpp 97f135ab4148dd8e483e9a6fb7bfcab4fd30028d 2018-08-13 14:57:29 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrmssqlspatiallayer.cpp 49cda0e8ba7afd3bf31383fb76367bc113dbc31d 2019-01-27 17:28:30 +0100 Tamas Szekeres $") /************************************************************************/ /* OGRMSSQLSpatialLayer() */ /************************************************************************/ @@ -83,6 +83,8 @@ CPLODBCStatement *poStmtIn ) { + bool bShowFidColumn = CPLTestBool(CPLGetConfigOption("MSSQLSPATIAL_SHOW_FID_COLUMN", "NO")); + poFeatureDefn = new OGRFeatureDefn( pszLayerName ); nRawColumns = poStmtIn->GetColCount(); @@ -170,7 +172,9 @@ bIsIdentityFid = TRUE; nFIDColumnIndex = iCol; - continue; + + if (!bShowFidColumn) + continue; } } } @@ -181,7 +185,9 @@ pszFIDColumn = CPLStrdup( poStmtIn->GetColName(iCol) ); bIsIdentityFid = TRUE; nFIDColumnIndex = iCol; - continue; + + if (!bShowFidColumn) + continue; } else if (EQUAL(poStmtIn->GetColTypeName( iCol ), "bigint identity")) { @@ -189,7 +195,9 @@ bIsIdentityFid = TRUE; SetMetadataItem(OLMD_FID64, "YES"); nFIDColumnIndex = iCol; - continue; + + if (!bShowFidColumn) + continue; } } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/ngw/ngw_api.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/ngw/ngw_api.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/ngw/ngw_api.cpp 2018-12-14 21:38:59.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/ngw/ngw_api.cpp 2019-06-28 11:11:34.000000000 +0000 @@ -45,7 +45,7 @@ std::string GetChildren(const std::string &osUrl, const std::string &osResourceId) { - return osUrl + "/resource/" + osResourceId + "/child/"; + return osUrl + "/api/resource/?parent=" + osResourceId; } std::string GetFeature(const std::string &osUrl, const std::string &osResourceId) diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/ods/ogrodsdatasource.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/ods/ogrodsdatasource.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/ods/ogrodsdatasource.cpp 2018-12-14 21:39:03.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/ods/ogrodsdatasource.cpp 2019-06-28 11:11:50.000000000 +0000 @@ -36,7 +36,7 @@ #include #include -CPL_CVSID("$Id: ogrodsdatasource.cpp 6bc220ef217363b682d933ac36002bc9b6fe79a0 2018-11-19 23:28:06 +0100 Even Rouault $") +CPL_CVSID("$Id: ogrodsdatasource.cpp 9bae84e41e85f3d2fb01037dd7b2a1c974d1877e 2019-02-08 14:49:55 +0100 Even Rouault $") namespace OGRODS { @@ -787,12 +787,71 @@ } /************************************************************************/ +/* FillRepeatedCells() */ +/************************************************************************/ + +void OGRODSDataSource::FillRepeatedCells(bool wasLastCell) +{ + if( wasLastCell && osValue.empty() && osFormula.empty() ) + { + nCellsRepeated = 0; + return; + } + + if (nCellsRepeated < 0 || nCellsRepeated > 10000) + { + CPLError(CE_Failure, CPLE_NotSupported, + "Invalid value for number-columns-repeated = %d", + nCellsRepeated); + bEndTableParsing = true; + nCellsRepeated = 0; + return; + } + const int nFields = nCellsRepeated + + (poCurLayer != nullptr ? + poCurLayer->GetLayerDefn()->GetFieldCount() : 0); + if( nFields > 0 && nRowsRepeated > 100000 / nFields ) + { + CPLError(CE_Failure, CPLE_AppDefined, + "Too big gap with previous valid row"); + bEndTableParsing = true; + nCellsRepeated = 0; + return; + } + + const size_t nCellMemSize = + (!osValue.empty()) ? osValue.size() : osFormula.size(); + if( nCellMemSize > static_cast(10 * 1024 * 1024) / + (std::max(nCellsRepeated, 1) * nRowsRepeated) ) + { + CPLError(CE_Failure, CPLE_NotSupported, + "Too much memory for row/cell repetition"); + bEndTableParsing = true; + nCellsRepeated = 0; + return; + } + for(int i = 0; i < nCellsRepeated; i++) + { + if( !osValue.empty() ) + apoCurLineValues.push_back(osValue); + else + apoCurLineValues.push_back(osFormula); + apoCurLineTypes.push_back(osValueType); + } + + nCurCol += nCellsRepeated; + nCellsRepeated = 0; +} + +/************************************************************************/ /* startElementRow() */ /************************************************************************/ void OGRODSDataSource::startElementRow(const char *pszNameIn, const char **ppszAttr) { + FillRepeatedCells(false); + if (strcmp(pszNameIn, "table:table-cell") == 0) { PushState(STATE_CELL); @@ -838,38 +897,6 @@ nCellsRepeated = atoi( GetAttributeValue(ppszAttr, "table:number-columns-repeated", "1")); - if (nCellsRepeated < 0 || nCellsRepeated > 10000) - { - CPLError(CE_Failure, CPLE_NotSupported, - "Invalid value for number-columns-repeated = %d", - nCellsRepeated); - bEndTableParsing = true; - nCellsRepeated = 0; - return; - } - const int nFields = nCellsRepeated + - (poCurLayer != nullptr ? - poCurLayer->GetLayerDefn()->GetFieldCount() : 0); - if( nFields > 0 && nRowsRepeated > 100000 / nFields ) - { - CPLError(CE_Failure, CPLE_AppDefined, - "Too big gap with previous valid row"); - bEndTableParsing = true; - nCellsRepeated = 0; - return; - } - - const size_t nCellMemSize = - (!osValue.empty()) ? osValue.size() : osFormula.size(); - if( nCellMemSize > static_cast(10 * 1024 * 1024) / - (std::max(nCellsRepeated, 1) * nRowsRepeated) ) - { - CPLError(CE_Failure, CPLE_NotSupported, - "Too much memory for row/cell repetition"); - bEndTableParsing = true; - nCellsRepeated = 0; - return; - } } else if (strcmp(pszNameIn, "table:covered-table-cell") == 0) { @@ -891,6 +918,8 @@ { CPLAssert(strcmp(pszNameIn, "table:table-row") == 0); + FillRepeatedCells(true); + /* Remove blank columns at the right to defer type evaluation */ /* until necessary */ size_t i = apoCurLineTypes.size(); @@ -1141,17 +1170,6 @@ if (stateStack[nStackDepth].nBeginDepth == nDepth) { CPLAssert(strcmp(pszNameIn, "table:table-cell") == 0); - - for(int i = 0; i < nCellsRepeated; i++) - { - if( !osValue.empty() ) - apoCurLineValues.push_back(osValue); - else - apoCurLineValues.push_back(osFormula); - apoCurLineTypes.push_back(osValueType); - } - - nCurCol += nCellsRepeated; } } @@ -1844,6 +1862,11 @@ osTmpFilename = CPLSPrintf("/vsizip/%s/META-INF/manifest.xml", pszName); VSILFILE* fp = VSIFOpenL(osTmpFilename, "wb"); + if( fp == nullptr ) + { + VSIFCloseL(fpZIP); + return; + } VSIFPrintfL(fp, "\n"); VSIFPrintfL( fp, @@ -1867,6 +1890,11 @@ osTmpFilename = CPLSPrintf("/vsizip/%s/meta.xml", pszName); fp = VSIFOpenL(osTmpFilename, "wb"); + if( fp == nullptr ) + { + VSIFCloseL(fpZIP); + return; + } VSIFPrintfL(fp, "\n"); VSIFPrintfL( fp, "\n"); VSIFPrintfL( fp, "\n"); VSIFPrintfL( fp, "\n"); VSIFPrintfL( fp, " -CPL_CVSID("$Id: ogrpdslayer.cpp b1488a47a4334ae9a19c75888fb84beda047c286 2018-06-28 01:42:24 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrpdslayer.cpp fb91c16ad0a9cc8c4320f6a4fd55b1095c3294d3 2019-04-30 18:05:40 +0200 Even Rouault $") namespace OGRPDS { @@ -310,6 +310,11 @@ CPLError(CE_Failure, CPLE_AppDefined, "Field %d out of record extents", nFields); CSLDestroy(papszTokens); + if( nFields == 0 ) + { + CPLFree(pasFieldDesc); + pasFieldDesc = nullptr; + } break; } } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/pgdump/ogrpgdumpdatasource.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/pgdump/ogrpgdumpdatasource.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/pgdump/ogrpgdumpdatasource.cpp 2018-12-14 21:39:07.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/pgdump/ogrpgdumpdatasource.cpp 2019-06-28 11:11:43.000000000 +0000 @@ -31,7 +31,7 @@ #include "cpl_conv.h" #include "cpl_string.h" -CPL_CVSID("$Id: ogrpgdumpdatasource.cpp 1439dfd01ac6dfcbb4f4f0c267c8db2b15c98461 2018-09-09 15:02:14 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrpgdumpdatasource.cpp 32f952579b759052f06138d42a2348fa650ef362 2019-03-15 03:53:44 +0200 Elias Kunnas $") /************************************************************************/ /* OGRPGDumpDataSource() */ @@ -460,7 +460,7 @@ } else { - osCreateTable.Printf("CREATE TABLE%s \"%s\".\"%s\"", + osCreateTable.Printf("CREATE%s TABLE \"%s\".\"%s\"", CPLFetchBool( papszOptions, "UNLOGGED", false ) ? " UNLOGGED": "", pszSchemaName, pszTableName); diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/pgdump/ogrpgdumplayer.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/pgdump/ogrpgdumplayer.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/pgdump/ogrpgdumplayer.cpp 2018-12-14 21:39:07.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/pgdump/ogrpgdumplayer.cpp 2019-06-28 11:11:43.000000000 +0000 @@ -31,7 +31,7 @@ #include "cpl_string.h" #include "ogr_p.h" -CPL_CVSID("$Id: ogrpgdumplayer.cpp e57c8627b2925254b5d0b35d42d987891eb3bcd0 2018-11-21 20:25:46 +0100 Even Rouault $") +CPL_CVSID("$Id: ogrpgdumplayer.cpp d30dd0c8977373e766a86f1cba668c19ed24a418 2019-05-06 11:38:01 +0200 Even Rouault $") constexpr int USE_COPY_UNSET = -1; @@ -1218,7 +1218,7 @@ { if (oField.GetSubType() == OFSTJSON ) pszFieldType = CPLGetConfigOption("OGR_PG_JSON_TYPE", "JSON"); - else if (oField.GetWidth() > 0 && bPreservePrecision ) + else if (oField.GetWidth() > 0 && oField.GetWidth() < 10485760 && bPreservePrecision ) pszFieldType = CPLSPrintf( "VARCHAR(%d)", oField.GetWidth() ); else pszFieldType = CPLGetConfigOption("OGR_PG_STRING_TYPE", "VARCHAR"); diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/selafin/io_selafin.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/selafin/io_selafin.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/selafin/io_selafin.cpp 2018-12-14 21:39:12.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/selafin/io_selafin.cpp 2019-06-28 11:12:08.000000000 +0000 @@ -32,7 +32,7 @@ #include "cpl_error.h" #include "cpl_quad_tree.h" -CPL_CVSID("$Id: io_selafin.cpp 7e07230bbff24eb333608de4dbd460b7312839d0 2017-12-11 19:08:47Z Even Rouault $") +CPL_CVSID("$Id: io_selafin.cpp 19cab0f8054c44beea46de34d2d715b6e3b036f4 2019-01-01 17:27:27 +0100 Even Rouault $") namespace Selafin { @@ -617,6 +617,11 @@ delete poHeader; return nullptr; } + if( poHeader->nPoints != 0 && poHeader->paadfCoords[i] == nullptr ) + { + delete poHeader; + return nullptr; + } for (int j=0;jnPoints;++j) poHeader->paadfCoords[i][j]+=poHeader->adfOrigin[i]; } // Update the boundinx box diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/dbfopen.c gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/dbfopen.c --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/dbfopen.c 2018-12-14 21:39:12.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/dbfopen.c 2019-06-28 11:11:20.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: dbfopen.c 88329b0434f3416ca3b85bc07286104a9453d100 2018-08-16 17:33:07 +0200 Even Rouault $ + * $Id: dbfopen.c 18e9a1cc668ec0fd308b4e681ef4da2f00d1de44 2019-03-23 23:54:29 +0100 Even Rouault $ * * Project: Shapelib * Purpose: Implementation of .dbf access API documented in dbf_api.html. @@ -216,7 +216,7 @@ #define CPLsnprintf snprintf #endif -SHP_CVSID("$Id: dbfopen.c 88329b0434f3416ca3b85bc07286104a9453d100 2018-08-16 17:33:07 +0200 Even Rouault $") +SHP_CVSID("$Id: dbfopen.c 18e9a1cc668ec0fd308b4e681ef4da2f00d1de44 2019-03-23 23:54:29 +0100 Even Rouault $") #ifndef FALSE # define FALSE 0 @@ -1515,7 +1515,7 @@ szSField[psDBF->panFieldSize[iField]] = '\0'; nRetResult = FALSE; } - strncpy(REINTERPRET_CAST(char *, pabyRec+psDBF->panFieldOffset[iField]), + memcpy(REINTERPRET_CAST(char *, pabyRec+psDBF->panFieldOffset[iField]), szSField, strlen(szSField) ); break; } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/ogrshapedatasource.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/ogrshapedatasource.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/ogrshapedatasource.cpp 2018-12-14 21:39:13.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/ogrshapedatasource.cpp 2019-06-28 11:11:21.000000000 +0000 @@ -53,7 +53,7 @@ // #define IMMEDIATE_OPENING 1 -CPL_CVSID("$Id: ogrshapedatasource.cpp 8e8f8070b9644563ab84a2543ed8d2d54d3b1c61 2018-03-28 02:28:56 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrshapedatasource.cpp 93496dd40fc5cd9598410057034f29e2c9e74e11 2019-06-27 23:28:09 +0200 Even Rouault $") /************************************************************************/ /* DS_SHPOpen() */ @@ -345,23 +345,36 @@ /* Care is taken to suppress the error and only reissue it if */ /* we think it is appropriate. */ /* -------------------------------------------------------------------- */ + CPLErrorReset(); CPLPushErrorHandler( CPLQuietErrorHandler ); SHPHandle hSHP = bUpdate ? DS_SHPOpen( pszNewName, "r+" ) : DS_SHPOpen( pszNewName, "r" ); CPLPopErrorHandler(); - if( hSHP == nullptr - && (!EQUAL(CPLGetExtension(pszNewName),"dbf") - || strstr(CPLGetLastErrorMsg(),".shp") == nullptr) ) + const bool bRestoreSHX = + CPLTestBool( CPLGetConfigOption("SHAPE_RESTORE_SHX", "FALSE") ); + if( bRestoreSHX && EQUAL(CPLGetExtension(pszNewName),"dbf") && + CPLGetLastErrorMsg()[0] != '\0' ) { CPLString osMsg = CPLGetLastErrorMsg(); - CPLError( CE_Failure, CPLE_OpenFailed, "%s", osMsg.c_str() ); + CPLError( CE_Warning, CPLE_AppDefined, "%s", osMsg.c_str() ); + } + else + { + if( hSHP == nullptr + && (!EQUAL(CPLGetExtension(pszNewName),"dbf") + || strstr(CPLGetLastErrorMsg(),".shp") == nullptr) ) + { + CPLString osMsg = CPLGetLastErrorMsg(); - return false; + CPLError( CE_Failure, CPLE_OpenFailed, "%s", osMsg.c_str() ); + + return false; + } + CPLErrorReset(); } - CPLErrorReset(); /* -------------------------------------------------------------------- */ /* Open the .dbf file, if it exists. To open a dbf file, the */ @@ -461,6 +474,31 @@ } /************************************************************************/ +/* LaunderLayerName() */ +/************************************************************************/ + +static CPLString LaunderLayerName(const char* pszLayerName) +{ + std::string osRet(pszLayerName); + for( char& ch: osRet ) + { + // https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file + if( ch == '<' || ch == '>' || ch == ':' || ch == '"' || + ch == '/' || ch == '\\' || ch== '?' || ch == '*' ) + { + ch = '_'; + } + } + if( osRet != pszLayerName ) + { + CPLError(CE_Warning, CPLE_AppDefined, + "Invalid layer name for a shapefile: %s. Laundered to %s.", + pszLayerName, osRet.c_str()); + } + return osRet; +} + +/************************************************************************/ /* ICreateLayer() */ /************************************************************************/ @@ -703,13 +741,13 @@ // datasource ... Ahem ahem. char *pszPath = CPLStrdup(CPLGetPath(pszName)); pszFilenameWithoutExt = - CPLStrdup(CPLFormFilename(pszPath, pszLayerName, nullptr)); + CPLStrdup(CPLFormFilename(pszPath, LaunderLayerName(pszLayerName).c_str(), nullptr)); CPLFree( pszPath ); } else { pszFilenameWithoutExt = - CPLStrdup(CPLFormFilename(pszName, pszLayerName, nullptr)); + CPLStrdup(CPLFormFilename(pszName, LaunderLayerName(pszLayerName).c_str(), nullptr)); } /* -------------------------------------------------------------------- */ @@ -1140,6 +1178,20 @@ } /************************************************************************/ +/* GetExtensionsForDeletion() */ +/************************************************************************/ + +const char* const* OGRShapeDataSource::GetExtensionsForDeletion() +{ + static const char * const apszExtensions[] = + { "shp", "shx", "dbf", "sbn", "sbx", "prj", "idm", "ind", + "qix", "cpg", + "qpj", // QGIS projection file + nullptr }; + return apszExtensions; +} + +/************************************************************************/ /* DeleteLayer() */ /************************************************************************/ @@ -1159,6 +1211,9 @@ return OGRERR_FAILURE; } + // To ensure that existing layers are created. + GetLayerCount(); + if( iLayer < 0 || iLayer >= nLayers ) { CPLError( CE_Failure, CPLE_AppDefined, @@ -1181,11 +1236,16 @@ nLayers--; - VSIUnlink( CPLResetExtension(pszFilename, "shp") ); - VSIUnlink( CPLResetExtension(pszFilename, "shx") ); - VSIUnlink( CPLResetExtension(pszFilename, "dbf") ); - VSIUnlink( CPLResetExtension(pszFilename, "prj") ); - VSIUnlink( CPLResetExtension(pszFilename, "qix") ); + const char * const* papszExtensions = + OGRShapeDataSource::GetExtensionsForDeletion(); + for( int iExt = 0; papszExtensions[iExt] != nullptr; iExt++ ) + { + const char *pszFile = CPLResetExtension(pszFilename, + papszExtensions[iExt]); + VSIStatBufL sStatBuf; + if( VSIStatL( pszFile, &sStatBuf ) == 0 ) + VSIUnlink( pszFile ); + } CPLFree( pszFilename ); diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/ogrshapedriver.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/ogrshapedriver.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/ogrshapedriver.cpp 2018-12-14 21:39:13.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/ogrshapedriver.cpp 2019-06-28 11:11:21.000000000 +0000 @@ -39,7 +39,7 @@ #include "gdal_priv.h" #include "ogrsf_frmts.h" -CPL_CVSID("$Id: ogrshapedriver.cpp d42cd627c2aa38bb6edfbedcfb039f5fe4ab7fed 2018-02-15 13:34:32Z Kurt Schwehr $") +CPL_CVSID("$Id: ogrshapedriver.cpp 4b7a9ef829d5432b1271c1c3de613c4db80c3205 2019-03-30 11:16:26 +0100 Even Rouault $") /************************************************************************/ /* Identify() */ @@ -216,19 +216,18 @@ return CE_Failure; } - static const char * const apszExtensions[] = - { "shp", "shx", "dbf", "sbn", "sbx", "prj", "idm", "ind", - "qix", "cpg", nullptr }; + const char * const* papszExtensions = + OGRShapeDataSource::GetExtensionsForDeletion(); if( VSI_ISREG(sStatBuf.st_mode) && (EQUAL(CPLGetExtension(pszDataSource), "shp") || EQUAL(CPLGetExtension(pszDataSource), "shx") || EQUAL(CPLGetExtension(pszDataSource), "dbf")) ) { - for( int iExt = 0; apszExtensions[iExt] != nullptr; iExt++ ) + for( int iExt = 0; papszExtensions[iExt] != nullptr; iExt++ ) { const char *pszFile = CPLResetExtension(pszDataSource, - apszExtensions[iExt]); + papszExtensions[iExt]); if( VSIStatL( pszFile, &sStatBuf ) == 0 ) VSIUnlink( pszFile ); } @@ -241,7 +240,7 @@ papszDirEntries != nullptr && papszDirEntries[iFile] != nullptr; iFile++ ) { - if( CSLFindString( apszExtensions, + if( CSLFindString( papszExtensions, CPLGetExtension(papszDirEntries[iFile])) != -1) { VSIUnlink( CPLFormFilename( pszDataSource, diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/ogrshape.h gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/ogrshape.h --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/ogrshape.h 2018-12-14 21:39:13.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/ogrshape.h 2019-06-28 11:11:21.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: ogrshape.h a49de8d77ff24f95d0851e87666d608e867e6995 2018-05-06 11:10:57 +0200 Even Rouault $ + * $Id: ogrshape.h 4b7a9ef829d5432b1271c1c3de613c4db80c3205 2019-03-30 11:16:26 +0100 Even Rouault $ * * Project: OpenGIS Simple Features Reference Implementation * Purpose: Private definitions within the Shapefile driver to implement @@ -314,6 +314,8 @@ DBFHandle DS_DBFOpen( const char * pszDBFFile, const char * pszAccess ); char **GetOpenOptions() { return papszOpenOptions; } + + static const char* const* GetExtensionsForDeletion(); }; #endif /* ndef OGRSHAPE_H_INCLUDED */ diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/shpopen.c gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/shpopen.c --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/shape/shpopen.c 2018-12-14 21:39:14.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/shape/shpopen.c 2019-06-28 11:11:21.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: shpopen.c 5ed09343b361b78ca5dc2fb55ec882be926e515e 2018-10-30 18:29:51 +0100 Even Rouault $ + * $Id: shpopen.c acbe3221c8ecffee3c66c5b0e42e539859e736b2 2019-05-09 12:31:42 +0200 Even Rouault $ * * Project: Shapelib * Purpose: Implementation of core Shapefile read/write functions. @@ -297,7 +297,7 @@ #include #include -SHP_CVSID("$Id: shpopen.c 5ed09343b361b78ca5dc2fb55ec882be926e515e 2018-10-30 18:29:51 +0100 Even Rouault $") +SHP_CVSID("$Id: shpopen.c acbe3221c8ecffee3c66c5b0e42e539859e736b2 2019-05-09 12:31:42 +0200 Even Rouault $") typedef unsigned char uchar; @@ -1029,7 +1029,16 @@ /* Read the file size from the SHP file. */ /* -------------------------------------------------------------------- */ pabyBuf = STATIC_CAST(uchar *, malloc(100)); - psHooks->FRead( pabyBuf, 100, 1, fpSHP ); + if( psHooks->FRead( pabyBuf, 100, 1, fpSHP ) != 1 ) + { + psHooks->Error( ".shp file is unreadable, or corrupt." ); + psHooks->FClose( fpSHP ); + + free( pabyBuf ); + free( pszFullname ); + + return( 0 ); + } nSHPFilesize = (STATIC_CAST(unsigned int, pabyBuf[24])<<24)|(pabyBuf[25]<<16)| (pabyBuf[26]<<8)|pabyBuf[27]; @@ -1042,22 +1051,15 @@ fpSHX = psHooks->FOpen( pszFullname, pszSHXAccess ); if( fpSHX == SHPLIB_NULLPTR ) { - memcpy(pszFullname + nLenWithoutExtension, ".SHX", 5); - fpSHP = psHooks->FOpen(pszFullname, pszAccess ); - } - - if( fpSHX == SHPLIB_NULLPTR ) - { size_t nMessageLen = strlen( pszFullname ) * 2 + 256; char* pszMessage = STATIC_CAST(char *, malloc( nMessageLen )); pszFullname[nLenWithoutExtension] = 0; snprintf( pszMessage, nMessageLen, - "Error opening file %s.shx or %s.SHX for writing", - pszFullname, pszFullname ); + "Error opening file %s.shx for writing", pszFullname ); psHooks->Error( pszMessage ); free( pszMessage ); - psHooks->FClose( fpSHX ); + psHooks->FClose( fpSHP ); free( pabyBuf ); free( pszFullname ); @@ -1072,6 +1074,7 @@ pabySHXHeader = STATIC_CAST(char *, malloc ( 100 )); memcpy( pabySHXHeader, pabyBuf, 100 ); psHooks->FWrite( pabySHXHeader, 100, 1, fpSHX ); + free ( pabyBuf ); while( nCurrentSHPOffset < nSHPFilesize ) { @@ -1115,7 +1118,6 @@ psHooks->FClose( fpSHP ); psHooks->FClose( fpSHX ); - free ( pabyBuf ); free ( pszFullname ); free ( pabySHXHeader ); @@ -2077,7 +2079,7 @@ { int nEntitySize, nRequiredSize; SHPObject *psShape; - char szErrorMsg[128]; + char szErrorMsg[160]; int nSHPType; int nBytesRead; diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/sqlite/ogrsqlitedatasource.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/sqlite/ogrsqlitedatasource.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/sqlite/ogrsqlitedatasource.cpp 2018-12-14 21:39:15.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/sqlite/ogrsqlitedatasource.cpp 2019-06-28 11:11:48.000000000 +0000 @@ -97,7 +97,7 @@ void GDALOpenInfoUnDeclareFileNotToOpen(const char* pszFilename); -CPL_CVSID("$Id: ogrsqlitedatasource.cpp 6e4b50c32e72fe2f68d3c69ba85e91f9a6379242 2018-11-29 11:56:33 +0100 Even Rouault $") +CPL_CVSID("$Id: ogrsqlitedatasource.cpp bdab2fffb0d9a2518458ba5bba5ca0b3db71f759 2019-03-19 02:56:07Z Chris Tapley $") /************************************************************************/ /* OGRSQLiteInitOldSpatialite() */ @@ -796,6 +796,11 @@ return FALSE; } + const char* pszVal = CPLGetConfigOption("SQLITE_BUSY_TIMEOUT", "5000"); + if ( pszVal != nullptr ) { + sqlite3_busy_timeout(hDB, atoi(pszVal)); + } + if( (flagsIn & SQLITE_OPEN_CREATE) == 0 ) { if( CPLTestBool(CPLGetConfigOption("OGR_VFK_DB_READ", "NO")) ) diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/vfk/vfkdatablocksqlite.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/vfk/vfkdatablocksqlite.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/vfk/vfkdatablocksqlite.cpp 2018-12-14 21:39:23.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/vfk/vfkdatablocksqlite.cpp 2019-06-28 11:11:49.000000000 +0000 @@ -37,7 +37,7 @@ #include "cpl_conv.h" #include "cpl_error.h" -CPL_CVSID("$Id: vfkdatablocksqlite.cpp 737b2508f8ca043a5048431d9769ab8b4e4c2ddf 2018-06-25 12:00:34 +0200 Martin Landa $") +CPL_CVSID("$Id: vfkdatablocksqlite.cpp d14708b4634f593eb74ad298a5f9604588a7a8d2 2019-03-11 11:55:09 +0100 Martin Landa $") /*! \brief VFKDataBlockSQLite constructor @@ -116,6 +116,7 @@ \param poLine VFK feature \param oOGRLine line geometry \param[in,out] bValid true when feature's geometry is valid + \param ftype geometry VFK type \param[in,out] rowIdFeat list of row ids which forms linestring \param[in,out] nGeometries number of features with valid geometry */ @@ -268,7 +269,6 @@ const GUIntBig ipcb = sqlite3_column_int64(hStmt, 1); const char* pszFType = reinterpret_cast( sqlite3_column_text(hStmt, 2)); - osFType = pszFType ? pszFType : ""; int rowId = sqlite3_column_int(hStmt, 3); if (ipcb == 1) { @@ -284,18 +284,17 @@ poFeature->SetRowId(rowId); /* set geometry & reset */ - CPLString osFTypeLine; if( poLine && !SetGeometryLineString( poLine, &oOGRLine, - bValid, osFTypeLine, rowIdFeat, nGeometries) ) + bValid, osFType.c_str(), rowIdFeat, nGeometries) ) { nInvalid++; } bValid = true; poLine = poFeature; - osFTypeLine = osFType; + osFType = pszFType ? pszFType : ""; iIdx++; } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/wasp/ogrwasp.h gdal-2.4.2+dfsg/ogr/ogrsf_frmts/wasp/ogrwasp.h --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/wasp/ogrwasp.h 2018-12-14 21:39:25.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/wasp/ogrwasp.h 2019-06-28 11:11:45.000000000 +0000 @@ -159,8 +159,6 @@ virtual OGRFeature *GetNextFeature() override; OGRFeature *GetNextRawFeature(); - virtual OGRwkbGeometryType GetGeomType() override { return wkbLineString25D; } - virtual OGRSpatialReference *GetSpatialRef() override { return poSpatialReference; } virtual const char *GetName() override { return sName.c_str(); } }; diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/wasp/ogrwasplayer.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/wasp/ogrwasplayer.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/wasp/ogrwasplayer.cpp 2018-12-14 21:39:25.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/wasp/ogrwasplayer.cpp 2019-06-28 11:11:45.000000000 +0000 @@ -35,7 +35,7 @@ #include #include -CPL_CVSID("$Id: ogrwasplayer.cpp 002b050d9a9ef403a732c1210784736ef97216d4 2018-04-09 21:34:55 +0200 Even Rouault $") +CPL_CVSID("$Id: ogrwasplayer.cpp 00b24922c54ad2cc203f397fc237dea1c58a416a 2019-05-15 07:42:43 -0500 Even Rouault $") /************************************************************************/ /* OGRWAsPLayer() */ @@ -58,7 +58,6 @@ { SetDescription( poLayerDefn->GetName() ); poLayerDefn->Reference(); - poLayerDefn->SetGeomType( wkbLineString25D ); poLayerDefn->GetGeomFieldDefn(0)->SetType( wkbLineString25D ); poLayerDefn->GetGeomFieldDefn(0)->SetSpatialRef( poSpatialReference ); if( poSpatialReference ) poSpatialReference->Reference(); @@ -92,7 +91,10 @@ pdfAdjacentPointTolerance(pdfAdjacentPointToleranceParam), pdfPointToCircleRadius(pdfPointToCircleRadiusParam) { + SetDescription( poLayerDefn->GetName() ); poLayerDefn->Reference(); + poLayerDefn->GetGeomFieldDefn(0)->SetType( wkbLineString25D ); + poLayerDefn->GetGeomFieldDefn(0)->SetSpatialRef( poSpatialReference ); if (poSpatialReference) poSpatialReference->Reference(); } diff -Nru gdal-2.4.0+dfsg/ogr/ogrsf_frmts/wfs/ogrwfs3driver.cpp gdal-2.4.2+dfsg/ogr/ogrsf_frmts/wfs/ogrwfs3driver.cpp --- gdal-2.4.0+dfsg/ogr/ogrsf_frmts/wfs/ogrwfs3driver.cpp 2018-12-14 21:39:25.000000000 +0000 +++ gdal-2.4.2+dfsg/ogr/ogrsf_frmts/wfs/ogrwfs3driver.cpp 2019-06-28 11:11:15.000000000 +0000 @@ -351,6 +351,11 @@ if( osName.empty() ) osName = oCollection.GetString("collectionId"); #endif + // "name" will be soon be replaced by "id" + // https://github.com/opengeospatial/WFS_FES/issues/171 + if( osName.empty() ) + osName = oCollection.GetString("id"); + if( osName.empty() ) continue; CPLString osTitle( oCollection.GetString("title") ); @@ -686,6 +691,8 @@ CPLJSONArray oLinks = oDoc.GetRoot().GetArray("links"); if( oLinks.IsValid() ) { + int nCountRelNext = 0; + CPLString osNextURL; for( int i = 0; i < oLinks.Size(); i++ ) { CPLJSONObject oLink = oLinks[i]; @@ -694,14 +701,27 @@ { continue; } - if( oLink.GetString("rel") == "next" && - (oLink.GetString("type") == "application/geo+json" || - oLink.GetString("type") == "application/json") ) + if( oLink.GetString("rel") == "next" ) { - m_osGetURL = oLink.GetString("href"); - break; + nCountRelNext ++; + auto type = oLink.GetString("type"); + if (type == "application/geo+json" || + type == "application/json" ) + { + m_osGetURL = oLink.GetString("href"); + break; + } + else if( type.empty() ) + { + osNextURL = oLink.GetString("href"); + } } } + if( nCountRelNext == 1 && m_osGetURL.empty() ) + { + // In case we go a "rel": "next" without a "type" + m_osGetURL = osNextURL; + } } if( m_osGetURL.empty() ) @@ -727,6 +747,32 @@ } } } + + // If source URL is https://user:pwd@server.com/bla + // and link only contains https://server.com/bla, then insert + // into it user:pwd + const auto nArobaseInURLPos = osURL.find('@'); + if( !m_osGetURL.empty() && + STARTS_WITH(osURL, "https://") && + STARTS_WITH(m_osGetURL, "https://") && + nArobaseInURLPos != std::string::npos && + m_osGetURL.find('@') == std::string::npos ) + { + const auto nFirstSlashPos = osURL.find('/', strlen("https://")); + if( nFirstSlashPos != std::string::npos && + nFirstSlashPos > nArobaseInURLPos ) + { + auto osUserPwd = osURL.substr(strlen("https://"), + nArobaseInURLPos - strlen("https://")); + auto osServer = osURL.substr(nArobaseInURLPos + 1, + nFirstSlashPos - nArobaseInURLPos); + if( STARTS_WITH(m_osGetURL, ("https://" + osServer).c_str()) ) + { + m_osGetURL = "https://" + osUserPwd + "@" + + m_osGetURL.substr(strlen("https://")); + } + } + } } } @@ -739,6 +785,11 @@ OGRFeature* poFeature = new OGRFeature(m_poFeatureDefn); poFeature->SetFrom(poSrcFeature); + auto poGeom = poFeature->GetGeometryRef(); + if( poGeom ) + { + poGeom->assignSpatialReference(GetSpatialRef()); + } poFeature->SetFID(m_nFID); m_nFID ++; delete poSrcFeature; diff -Nru gdal-2.4.0+dfsg/port/cpl_aws.cpp gdal-2.4.2+dfsg/port/cpl_aws.cpp --- gdal-2.4.0+dfsg/port/cpl_aws.cpp 2018-12-14 21:39:29.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_aws.cpp 2019-06-28 11:12:15.000000000 +0000 @@ -38,7 +38,7 @@ #include "cpl_http.h" #include -CPL_CVSID("$Id: cpl_aws.cpp 187fcc6764ffc2b6a0e39164b44f1204cc7db026 2018-10-02 12:51:37 +0100 Robert Coup $") +CPL_CVSID("$Id: cpl_aws.cpp 10f825e87e1ec29b6cc379fe1ee24e87fdf3f536 2019-06-07 20:50:53 +0200 Even Rouault $") // #define DEBUG_VERBOSE 1 @@ -380,7 +380,8 @@ const CPLString& osBucket, const CPLString& osObjectKey, bool bUseHTTPS, - bool bUseVirtualHosting ) : + bool bUseVirtualHosting, + bool bFromEC2 ) : m_osURL(BuildURL(osEndpoint, osBucket, osObjectKey, bUseHTTPS, bUseVirtualHosting)), m_osSecretAccessKey(osSecretAccessKey), @@ -392,7 +393,8 @@ m_osBucket(osBucket), m_osObjectKey(osObjectKey), m_bUseHTTPS(bUseHTTPS), - m_bUseVirtualHosting(bUseVirtualHosting) + m_bUseVirtualHosting(bUseVirtualHosting), + m_bFromEC2(bFromEC2) {} /************************************************************************/ @@ -969,8 +971,11 @@ CPLString& osSecretAccessKey, CPLString& osAccessKeyId, CPLString& osSessionToken, - CPLString& osRegion) + CPLString& osRegion, + bool& bFromEC2) { + bFromEC2 = false; + // AWS_REGION is GDAL specific. Later overloaded by standard // AWS_DEFAULT_REGION osRegion = CSLFetchNameValueDef(papszOptions, "AWS_REGION", @@ -1016,6 +1021,7 @@ if( GetConfigurationFromEC2(osSecretAccessKey, osAccessKeyId, osSessionToken) ) { + bFromEC2 = true; return true; } @@ -1065,9 +1071,10 @@ CPLString osAccessKeyId; CPLString osSessionToken; CPLString osRegion; + bool bFromEC2 = false; if( !GetConfiguration(papszOptions, osSecretAccessKey, osAccessKeyId, - osSessionToken, osRegion) ) + osSessionToken, osRegion, bFromEC2) ) { return nullptr; } @@ -1106,7 +1113,7 @@ osEndpoint, osRegion, osRequestPayer, osBucket, osObjectKey, bUseHTTPS, - bUseVirtualHosting); + bUseVirtualHosting, bFromEC2); } /************************************************************************/ @@ -1165,6 +1172,19 @@ const void *pabyDataContent, size_t nBytesContent ) const { + if( m_bFromEC2 ) + { + CPLString osSecretAccessKey, osAccessKeyId, osSessionToken; + if( GetConfigurationFromEC2(osSecretAccessKey, + osAccessKeyId, + osSessionToken) ) + { + m_osSecretAccessKey = osSecretAccessKey; + m_osAccessKeyId = osAccessKeyId; + m_osSessionToken = osSessionToken; + } + } + CPLString osXAMZDate = CPLGetConfigOption("AWS_TIMESTAMP", ""); if( osXAMZDate.empty() ) osXAMZDate = CPLGetAWS_SIGN4_Timestamp(); diff -Nru gdal-2.4.0+dfsg/port/cpl_aws.h gdal-2.4.2+dfsg/port/cpl_aws.h --- gdal-2.4.0+dfsg/port/cpl_aws.h 2018-12-14 21:39:29.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_aws.h 2019-06-28 11:12:18.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: cpl_aws.h 5318f6d39d2006a10cb6c1410334c56d76a74aa6 2018-06-20 16:38:42 +0200 Even Rouault $ + * $Id: cpl_aws.h 10f825e87e1ec29b6cc379fe1ee24e87fdf3f536 2019-06-07 20:50:53 +0200 Even Rouault $ * * Name: cpl_aws.h * Project: CPL - Common Portability Library @@ -128,9 +128,9 @@ CPL_DISALLOW_COPY_ASSIGN(VSIS3HandleHelper) CPLString m_osURL{}; - CPLString m_osSecretAccessKey{}; - CPLString m_osAccessKeyId{}; - CPLString m_osSessionToken{}; + mutable CPLString m_osSecretAccessKey{}; + mutable CPLString m_osAccessKeyId{}; + mutable CPLString m_osSessionToken{}; CPLString m_osEndpoint{}; CPLString m_osRegion{}; CPLString m_osRequestPayer{}; @@ -138,6 +138,7 @@ CPLString m_osObjectKey{}; bool m_bUseHTTPS = false; bool m_bUseVirtualHosting = false; + bool m_bFromEC2 = false; void RebuildURL() override; @@ -156,7 +157,8 @@ CPLString& osSecretAccessKey, CPLString& osAccessKeyId, CPLString& osSessionToken, - CPLString& osRegion); + CPLString& osRegion, + bool& bFromEC2); protected: public: @@ -168,7 +170,7 @@ const CPLString& osRequestPayer, const CPLString& osBucket, const CPLString& osObjectKey, - bool bUseHTTPS, bool bUseVirtualHosting); + bool bUseHTTPS, bool bUseVirtualHosting, bool bFromEC2); ~VSIS3HandleHelper(); static VSIS3HandleHelper* BuildFromURI(const char* pszURI, diff -Nru gdal-2.4.0+dfsg/port/cpl_config.h.in gdal-2.4.2+dfsg/port/cpl_config.h.in --- gdal-2.4.0+dfsg/port/cpl_config.h.in 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_config.h.in 2019-06-28 11:09:59.000000000 +0000 @@ -31,6 +31,9 @@ /* Define to 1 if you have the `getrlimit' function. */ #undef HAVE_GETRLIMIT +/* Define to 1 if you have the `RLIMIT_AS' constant. */ +#undef HAVE_RLIMIT_AS + /* Define to 1 if you have the header file. */ #undef HAVE_CSF_H diff -Nru gdal-2.4.0+dfsg/port/cpl_http.cpp gdal-2.4.2+dfsg/port/cpl_http.cpp --- gdal-2.4.0+dfsg/port/cpl_http.cpp 2018-12-14 21:39:31.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_http.cpp 2019-06-28 11:12:17.000000000 +0000 @@ -70,7 +70,7 @@ #endif // HAVE_CURL -CPL_CVSID("$Id: cpl_http.cpp 7ad910793a73592b64bc03575dbeee5643c4eee6 2018-12-05 17:32:34Z Scott Henderson $") +CPL_CVSID("$Id: cpl_http.cpp 3c353422ddd6f5d290f304f18af31a60ef90708e 2019-06-21 00:39:58 +0200 Even Rouault $") // list of named persistent http sessions @@ -500,12 +500,14 @@ /************************************************************************/ double CPLHTTPGetNewRetryDelay(int response_code, double dfOldDelay, - const char* pszErrBuf) + const char* pszErrBuf, + const char* pszCurlError) { if( response_code == 429 || response_code == 500 || (response_code >= 502 && response_code <= 504) || // S3 sends some client timeout errors as 400 Client Error - (response_code == 400 && pszErrBuf && strstr(pszErrBuf, "RequestTimeout")) ) + (response_code == 400 && pszErrBuf && strstr(pszErrBuf, "RequestTimeout")) || + (pszCurlError && strstr(pszCurlError, "Connection timed out")) ) { // Use an exponential backoff factor of 2 plus some random jitter // We don't care about cryptographic quality randomness, hence: @@ -904,12 +906,9 @@ double dfRetryDelaySecs = CPLAtof(pszRetryDelay); int nMaxRetries = atoi(pszMaxRetries); int nRetryCount = 0; - bool bRequestRetry; - do + while(true) { - bRequestRetry = false; - /* -------------------------------------------------------------------- */ /* Execute the request, waiting for results. */ /* -------------------------------------------------------------------- */ @@ -926,6 +925,40 @@ if( psResult->pszContentType != nullptr ) psResult->pszContentType = CPLStrdup(psResult->pszContentType); + long response_code = 0; + curl_easy_getinfo(http_handle, CURLINFO_RESPONSE_CODE, + &response_code); + if( response_code != 200 ) + { + const double dfNewRetryDelay = CPLHTTPGetNewRetryDelay( + static_cast(response_code), + dfRetryDelaySecs, + reinterpret_cast(psResult->pabyData), + szCurlErrBuf); + if( dfNewRetryDelay > 0 && nRetryCount < nMaxRetries ) + { + CPLError(CE_Warning, CPLE_AppDefined, + "HTTP error code: %d - %s. " + "Retrying again in %.1f secs", + static_cast(response_code), pszURL, + dfRetryDelaySecs); + CPLSleep(dfRetryDelaySecs); + dfRetryDelaySecs = dfNewRetryDelay; + nRetryCount++; + + CPLFree(psResult->pszContentType); + psResult->pszContentType = nullptr; + CSLDestroy(psResult->papszHeaders); + psResult->papszHeaders = nullptr; + CPLFree(psResult->pabyData); + psResult->pabyData = nullptr; + psResult->nDataLen = 0; + psResult->nDataAlloc = 0; + + continue; + } + } + /* -------------------------------------------------------------------- */ /* Have we encountered some sort of error? */ /* -------------------------------------------------------------------- */ @@ -971,52 +1004,17 @@ } else { - // HTTP errors do not trigger curl errors. But we need to - // propagate them to the caller though. - long response_code = 0; - curl_easy_getinfo(http_handle, CURLINFO_RESPONSE_CODE, - &response_code); - if( response_code >= 400 && response_code < 600 ) { - const double dfNewRetryDelay = CPLHTTPGetNewRetryDelay( - static_cast(response_code), - dfRetryDelaySecs, - reinterpret_cast(psResult->pabyData)); - if( dfNewRetryDelay > 0 && nRetryCount < nMaxRetries ) - { - CPLError(CE_Warning, CPLE_AppDefined, - "HTTP error code: %d - %s. " - "Retrying again in %.1f secs", - static_cast(response_code), pszURL, - dfRetryDelaySecs); - CPLSleep(dfRetryDelaySecs); - dfRetryDelaySecs = dfNewRetryDelay; - nRetryCount++; - - CPLFree(psResult->pszContentType); - psResult->pszContentType = nullptr; - CSLDestroy(psResult->papszHeaders); - psResult->papszHeaders = nullptr; - CPLFree(psResult->pabyData); - psResult->pabyData = nullptr; - psResult->nDataLen = 0; - psResult->nDataAlloc = 0; - - bRequestRetry = true; - } - else - { - psResult->pszErrBuf = - CPLStrdup(CPLSPrintf("HTTP error code : %d", - static_cast(response_code))); - CPLError(CE_Failure, CPLE_AppDefined, - "%s", psResult->pszErrBuf); - } + psResult->pszErrBuf = + CPLStrdup(CPLSPrintf("HTTP error code : %d", + static_cast(response_code))); + CPLError(CE_Failure, CPLE_AppDefined, + "%s", psResult->pszErrBuf); } } + break; } - while( bRequestRetry ); if( !pszPersistent ) curl_easy_cleanup( http_handle ); diff -Nru gdal-2.4.0+dfsg/port/cpl_http.h gdal-2.4.2+dfsg/port/cpl_http.h --- gdal-2.4.0+dfsg/port/cpl_http.h 2018-12-14 21:39:31.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_http.h 2019-06-28 11:12:15.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: cpl_http.h 15748d502551e341d73d0e388eb9f2e5209aa902 2018-10-06 19:05:17 +0200 Denis Rykov $ + * $Id: cpl_http.h 3c353422ddd6f5d290f304f18af31a60ef90708e 2019-06-21 00:39:58 +0200 Even Rouault $ * * Project: Common Portability Library * Purpose: Function wrapper for libcurl HTTP access. @@ -138,7 +138,8 @@ // Not sure if this belong here, used in cpl_http.cpp, cpl_vsil_curl.cpp and frmts/wms/gdalhttp.cpp void* CPLHTTPSetOptions(void *pcurl, const char *pszURL, const char * const* papszOptions); char** CPLHTTPGetOptionsFromEnv(); -double CPLHTTPGetNewRetryDelay(int response_code, double dfOldDelay, const char* pszErrBuf); +double CPLHTTPGetNewRetryDelay(int response_code, double dfOldDelay, + const char* pszErrBuf, const char* pszCurlError); void* CPLHTTPIgnoreSigPipe(); void CPLHTTPRestoreSigPipeHandler(void* old_handler); bool CPLMultiPerformWait(void* hCurlMultiHandle, int& repeats); diff -Nru gdal-2.4.0+dfsg/port/cpl_odbc.cpp gdal-2.4.2+dfsg/port/cpl_odbc.cpp --- gdal-2.4.0+dfsg/port/cpl_odbc.cpp 2018-12-14 21:39:32.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_odbc.cpp 2019-06-28 11:12:20.000000000 +0000 @@ -34,7 +34,7 @@ #include "cpl_string.h" #include "cpl_error.h" -CPL_CVSID("$Id: cpl_odbc.cpp 8adeb664c03ee156bcf8532c594ceb2d33d4104d 2018-08-14 09:52:54 -0400 Simon South $") +CPL_CVSID("$Id: cpl_odbc.cpp 117d93830b5c8bcf895eb6af25855f35a372bfa9 2019-03-27 20:18:35 +0100 backporting[bot] $") #ifndef SQLColumns_TABLE_CAT #define SQLColumns_TABLE_CAT 1 @@ -345,22 +345,33 @@ for(SQLSMALLINT nRecNum = 1; nDiagRetCode == SQL_SUCCESS; ++nRecNum) { SQLCHAR achSQLState[5 + 1] = {}; - SQLCHAR achCurErrMsg[SQL_MAX_MESSAGE_LENGTH] = {}; + SQLCHAR* pachCurErrMsg = static_cast(CPLMalloc((SQL_MAX_MESSAGE_LENGTH + 1) * sizeof(SQLCHAR))); SQLSMALLINT nTextLength = 0; SQLINTEGER nNativeError = 0; nDiagRetCode = SQLGetDiagRec( SQL_HANDLE_STMT, hStmt, nRecNum, achSQLState, &nNativeError, - reinterpret_cast(achCurErrMsg), - sizeof(achCurErrMsg) - 1, &nTextLength ); + reinterpret_cast(pachCurErrMsg), + SQL_MAX_MESSAGE_LENGTH, &nTextLength ); if (nDiagRetCode == SQL_SUCCESS || nDiagRetCode == SQL_SUCCESS_WITH_INFO) { - achCurErrMsg[nTextLength] = '\0'; + if (nTextLength >= SQL_MAX_MESSAGE_LENGTH) + { + // the buffer wasn't enough, retry + SQLSMALLINT nTextLength2 = 0; + pachCurErrMsg = static_cast(CPLRealloc(pachCurErrMsg, (nTextLength + 1) * sizeof(SQLCHAR))); + nDiagRetCode = SQLGetDiagRec(SQL_HANDLE_STMT, hStmt, nRecNum, + achSQLState, &nNativeError, + reinterpret_cast(pachCurErrMsg), + nTextLength, &nTextLength2); + } + pachCurErrMsg[nTextLength] = '\0'; m_osLastError += CPLString().Printf("%s[%5s]%s(" CPL_FRMT_GIB ")", (m_osLastError.empty() ? "" : ", "), achSQLState, - achCurErrMsg, static_cast(nNativeError)); + pachCurErrMsg, static_cast(nNativeError)); } + CPLFree(pachCurErrMsg); } if( nRetCode == SQL_ERROR && m_bInTransaction ) diff -Nru gdal-2.4.0+dfsg/port/cpl_string.cpp gdal-2.4.2+dfsg/port/cpl_string.cpp --- gdal-2.4.0+dfsg/port/cpl_string.cpp 2018-12-14 21:39:33.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_string.cpp 2019-06-28 11:12:17.000000000 +0000 @@ -63,7 +63,7 @@ #define va_copy __va_copy #endif -CPL_CVSID("$Id: cpl_string.cpp e12a0fc61edef91a039e13c7baff2ce58288a552 2018-08-10 00:53:29 +0200 Juergen E. Fischer $") +CPL_CVSID("$Id: cpl_string.cpp 5abc994c483b7f6fd5bcd234fc2691e79a1659df 2019-02-24 00:46:55 -0800 Matvei Stefarov $") /*===================================================================== StringList manipulation functions. @@ -2581,7 +2581,7 @@ const char* pszValueInit = pszValue; // Skip leading spaces. - while( isspace( *pszValue ) ) + while( isspace(static_cast( *pszValue )) ) ++pszValue; if( *pszValue == '\0' ) @@ -2600,15 +2600,15 @@ for( ; *pszValue != '\0'; ++pszValue ) { - if( isdigit( *pszValue)) + if( isdigit(static_cast( *pszValue )) ) { bIsLastCharExponent = false; bFoundMantissa = true; } - else if( isspace( *pszValue ) ) + else if( isspace(static_cast( *pszValue )) ) { const char* pszTmp = pszValue; - while( isspace( *pszTmp ) ) + while( isspace(static_cast( *pszTmp )) ) ++pszTmp; if( *pszTmp == 0 ) break; diff -Nru gdal-2.4.0+dfsg/port/cpl_userfaultfd.cpp gdal-2.4.2+dfsg/port/cpl_userfaultfd.cpp --- gdal-2.4.0+dfsg/port/cpl_userfaultfd.cpp 2018-12-14 21:39:34.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_userfaultfd.cpp 2019-06-28 11:12:16.000000000 +0000 @@ -120,7 +120,14 @@ return; } +#ifdef HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" +#endif static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; +#ifdef HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT +#pragma GCC diagnostic pop +#endif static int64_t get_page_limit() { diff -Nru gdal-2.4.0+dfsg/port/cpl_vsi.h gdal-2.4.2+dfsg/port/cpl_vsi.h --- gdal-2.4.0+dfsg/port/cpl_vsi.h 2018-12-14 21:39:34.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_vsi.h 2019-06-28 11:12:17.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: cpl_vsi.h 7b937306fdeb31f6adefa6675d83ccd60f99e619 2018-11-25 23:10:44 +0100 Even Rouault $ + * $Id: cpl_vsi.h fe66521fc5854bf38bc2eb42326d9a17d2f0f275 2018-12-22 13:46:01 +0100 Juergen E. Fischer $ * * Project: CPL - Common Portability Library * Author: Frank Warmerdam, warmerdam@pobox.com @@ -330,7 +330,7 @@ /** NULL-terminated list of extra properties. */ char** papszExtra; -#ifdef __cplusplus +#if defined(__cplusplus) && !defined(CPL_SUPRESS_CPLUSPLUS) /*! @cond Doxygen_Suppress */ VSIDIREntry(); ~VSIDIREntry(); diff -Nru gdal-2.4.0+dfsg/port/cpl_vsil_curl.cpp gdal-2.4.2+dfsg/port/cpl_vsil_curl.cpp --- gdal-2.4.0+dfsg/port/cpl_vsil_curl.cpp 2018-12-14 21:39:35.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_vsil_curl.cpp 2019-06-28 11:12:16.000000000 +0000 @@ -45,7 +45,7 @@ #include "cpl_http.h" #include "cpl_mem_cache.h" -CPL_CVSID("$Id: cpl_vsil_curl.cpp 7b937306fdeb31f6adefa6675d83ccd60f99e619 2018-11-25 23:10:44 +0100 Even Rouault $") +CPL_CVSID("$Id: cpl_vsil_curl.cpp 41203f9810fb4dcef302c9f60c1e4763674a7f0c 2019-06-25 11:41:15 +0200 Even Rouault $") #ifndef HAVE_CURL @@ -614,9 +614,13 @@ { return (strstr(pszURL, ".s3.amazonaws.com/") != nullptr || - strstr(pszURL, ".storage.googleapis.com/") != nullptr) && + strstr(pszURL, ".s3.amazonaws.com:") != nullptr || + strstr(pszURL, ".storage.googleapis.com/") != nullptr || + strstr(pszURL, ".storage.googleapis.com:") != nullptr) && (strstr(pszURL, "&Signature=") != nullptr || - strstr(pszURL, "?Signature=") != nullptr); + strstr(pszURL, "?Signature=") != nullptr || + strstr(pszURL, "&X-Amz-Signature=") != nullptr || + strstr(pszURL, "?X-Amz-Signature=") != nullptr); } /************************************************************************/ @@ -628,9 +632,16 @@ const char* pszExpires = strstr(pszURL, "&Expires="); if( pszExpires == nullptr ) pszExpires = strstr(pszURL, "?Expires="); + if( pszExpires != nullptr ) + return CPLAtoGIntBig(pszExpires + strlen("&Expires=")); + + pszExpires = strstr(pszURL, "?X-Amz-Expires="); if( pszExpires == nullptr ) - return 0; - return CPLAtoGIntBig(pszExpires + strlen("&Expires=")); + pszExpires = strstr(pszURL, "?X-Amz-Expires="); + if( pszExpires != nullptr ) + return CPLAtoGIntBig(pszExpires + strlen("&X-Amz-Expires=")); + + return 0; } /************************************************************************/ @@ -820,6 +831,14 @@ } } + if( ENABLE_DEBUG && szCurlErrBuf[0] != '\0' && + sWriteFuncHeaderData.bDownloadHeaderOnly && + EQUAL(szCurlErrBuf, "Failed writing header") ) + { + // Not really an error since we voluntarily interrupted the download ! + szCurlErrBuf[0] = 0; + } + double dfSize = 0; if( oFileProp.eExists != EXIST_YES ) { @@ -903,7 +922,18 @@ { oFileProp.eExists = EXIST_YES; if( dfSize < 0 ) + { + if( osVerb == "HEAD" && !bRetryWithGet ) + { + CPLDebug("VSICURL", "HEAD did not provide file size. Retrying with GET"); + bRetryWithGet = true; + CPLFree(sWriteFuncData.pBuffer); + CPLFree(sWriteFuncHeaderData.pBuffer); + curl_easy_cleanup(hCurlHandle); + goto retry; + } oFileProp.fileSize = 0; + } else oFileProp.fileSize = static_cast(dfSize); } @@ -984,11 +1014,10 @@ } else if( response_code != 200 ) { - // If HTTP 429, 500, 502, 503, 504 error retry after a - // pause. + // Look if we should attempt a retry const double dfNewRetryDelay = CPLHTTPGetNewRetryDelay( static_cast(response_code), dfRetryDelay, - sWriteFuncHeaderData.pBuffer); + sWriteFuncHeaderData.pBuffer, szCurlErrBuf); if( dfNewRetryDelay > 0 && nRetryCount < m_nMaxRetry ) { @@ -1340,11 +1369,10 @@ return DownloadRegion(startOffset, nBlocks); } - // If HTTP 429, 500, 502, 503, 504 error retry after a - // pause. + // Look if we should attempt a retry const double dfNewRetryDelay = CPLHTTPGetNewRetryDelay( static_cast(response_code), dfRetryDelay, - sWriteFuncHeaderData.pBuffer); + sWriteFuncHeaderData.pBuffer, szCurlErrBuf); if( dfNewRetryDelay > 0 && nRetryCount < m_nMaxRetry ) { @@ -1647,7 +1675,7 @@ // dubious now. We could probably remove it return ReadMultiRangeSingleGet(nRanges, ppData, panOffsets, panSizes); } - else if( EQUAL(pszMultiRangeStrategy, "SERIAL") ) + else if( nRanges == 1 || EQUAL(pszMultiRangeStrategy, "SERIAL") ) { return VSIVirtualHandle::ReadMultiRange( nRanges, ppData, panOffsets, panSizes); diff -Nru gdal-2.4.0+dfsg/port/cpl_vsil_curl_streaming.cpp gdal-2.4.2+dfsg/port/cpl_vsil_curl_streaming.cpp --- gdal-2.4.0+dfsg/port/cpl_vsil_curl_streaming.cpp 2018-12-14 21:39:35.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_vsil_curl_streaming.cpp 2019-06-28 11:12:15.000000000 +0000 @@ -45,7 +45,7 @@ #include "cpl_string.h" #include "cpl_time.h" -CPL_CVSID("$Id: cpl_vsil_curl_streaming.cpp 07f0cbf27fd991e2767873940c8a30f1b7e13f82 2018-08-17 18:52:46 +0200 Even Rouault $") +CPL_CVSID("$Id: cpl_vsil_curl_streaming.cpp 5a45db548820d04a05a672768991160a4a9cb89a 2019-03-22 12:45:31 +0100 Even Rouault $") #if !defined(HAVE_CURL) || defined(CPL_MULTIPROC_STUB) @@ -79,6 +79,13 @@ // Not supported } +#ifdef HAVE_CURL +void VSICurlStreamingClearCache( void ) +{ + // Not supported +} +#endif + #else //! @cond Doxygen_Suppress diff -Nru gdal-2.4.0+dfsg/port/cpl_vsil_gzip.cpp gdal-2.4.2+dfsg/port/cpl_vsil_gzip.cpp --- gdal-2.4.0+dfsg/port/cpl_vsil_gzip.cpp 2018-12-14 21:39:35.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_vsil_gzip.cpp 2019-06-28 11:12:19.000000000 +0000 @@ -111,7 +111,7 @@ #include "cpl_vsi_virtual.h" #include "cpl_worker_thread_pool.h" -CPL_CVSID("$Id: cpl_vsil_gzip.cpp 094243ec5954391bc73d0b9c2e7e940d57003b63 2018-11-16 00:01:37 +0100 Even Rouault $") +CPL_CVSID("$Id: cpl_vsil_gzip.cpp 4b091aee847a9c6b6dee7933c645b7ba5532b200 2019-02-20 22:59:47 +0100 Even Rouault $") constexpr int Z_BUFSIZE = 65536; // Original size is 16384 constexpr int gz_magic[2] = {0x1f, 0x8b}; // gzip magic header @@ -1207,6 +1207,7 @@ int nSeqNumberExpected_ = 0; int nSeqNumberExpectedCRC_ = 0; size_t nChunkSize_ = 0; + bool bHasErrored_ = false; struct Job { @@ -1578,10 +1579,6 @@ nToWrite) < nToWrite; sMutex_.lock(); nSeqNumberExpected_ ++; - if( bError ) - { - return false; - } if( nDeflateType_ != CPL_DEFLATE_TYPE_GZIP ) { @@ -1591,6 +1588,11 @@ apoFreeJobs_.push_back(psJob); } + if( bError ) + { + return false; + } + do_it_again = true; break; } @@ -1652,6 +1654,9 @@ size_t const nSize, size_t const nMemb ) { + if( bHasErrored_ ) + return 0; + const char* pszBuffer = static_cast(pBuffer); size_t nBytesToWrite = nSize * nMemb; while( nBytesToWrite > 0 ) @@ -1675,6 +1680,7 @@ } if( !ProcessCompletedJobs() ) { + bHasErrored_ = true; return 0; } } @@ -1693,6 +1699,7 @@ poPool_.reset(new CPLWorkerThreadPool()); if( !poPool_->Setup(nThreads_, nullptr, nullptr, false) ) { + bHasErrored_ = true; poPool_.reset(); return 0; } diff -Nru gdal-2.4.0+dfsg/port/cpl_vsil_hdfs.cpp gdal-2.4.2+dfsg/port/cpl_vsil_hdfs.cpp --- gdal-2.4.0+dfsg/port/cpl_vsil_hdfs.cpp 2018-12-14 21:39:35.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_vsil_hdfs.cpp 2019-06-28 11:12:19.000000000 +0000 @@ -40,6 +40,7 @@ #endif #include +#include #include "cpl_port.h" #include "cpl_vsi.h" @@ -48,7 +49,7 @@ #include "cpl_error.h" #include "cpl_vsi_virtual.h" -CPL_CVSID("$Id: cpl_vsil_hdfs.cpp e4f961ce6643ea9444602914b04d949544cf19fb 2018-06-23 11:35:36 -0400 James McClain $") +CPL_CVSID("$Id: cpl_vsil_hdfs.cpp 55274f2737575960377c47b82aac4abc938fa902 2019-03-10 04:36:52 -0400 James McClain $") #ifdef HDFS_ENABLED @@ -154,18 +155,38 @@ if (nSize == 0 || nMemb == 0) return 0; - int bytes = hdfsRead(poFilesystem, poFile, pBuffer, nSize * nMemb); + size_t bytes_wanted = nSize * nMemb; + size_t bytes_read = 0; - if (bytes > 0) - return bytes/nSize; - else if (bytes == 0) { - bEOF = true; - return 0; - } - else { - bEOF = false; - return 0; - } + while (bytes_read < bytes_wanted) + { + tSize bytes = 0; + size_t bytes_to_request = bytes_wanted - bytes_read; + + // The `Read` function can take 64-bit arguments for its + // read-request size, whereas `hdfsRead` may only take a 32-bit + // argument. If the former requests an amount larger than can + // be encoded in a signed 32-bit number, break the request into + // 2GB batches. + bytes = hdfsRead(poFilesystem, poFile, + pBuffer + bytes_read, + bytes_to_request > INT_MAX ? INT_MAX : bytes_to_request); + + if (bytes > 0) { + bytes_read += bytes; + } + if (bytes == 0) { + bEOF = true; + return bytes_read/nSize; + } + else if (bytes < 0) { + bEOF = false; + return 0; + } + } + + if (bytes_read > 0) + return bytes_read/nSize; } size_t diff -Nru gdal-2.4.0+dfsg/port/cpl_vsil_tar.cpp gdal-2.4.2+dfsg/port/cpl_vsil_tar.cpp --- gdal-2.4.0+dfsg/port/cpl_vsil_tar.cpp 2018-12-14 21:39:35.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_vsil_tar.cpp 2019-06-28 11:12:16.000000000 +0000 @@ -45,7 +45,7 @@ #include "cpl_string.h" #include "cpl_vsi_virtual.h" -CPL_CVSID("$Id: cpl_vsil_tar.cpp 92d58961031e0eeae4c40fe1e4e18b55f8821109 2018-06-08 19:53:00 +0200 Even Rouault $") +CPL_CVSID("$Id: cpl_vsil_tar.cpp 177fbad1e0231b2937209597869dbb95fcdcdd15 2019-03-27 23:30:28 +0100 Even Rouault $") #if (defined(DEBUG) || defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)) && !defined(HAVE_FUZZER_FRIENDLY_ARCHIVE) /* This is a completely custom archive format that is rather inefficient */ @@ -338,13 +338,16 @@ { return FALSE; } - if( abyHeader[124] < '0' || abyHeader[124] > '7' ) + if( !(abyHeader[124] == ' ' || (abyHeader[124] >= '0' && abyHeader[124] <= '7')) ) return FALSE; osNextFileName = reinterpret_cast(abyHeader); nNextFileSize = 0; for(int i=0;i<11;i++) - nNextFileSize = nNextFileSize * 8 + (abyHeader[124+i] - '0'); + { + if( abyHeader[124+i] != ' ' ) + nNextFileSize = nNextFileSize * 8 + (abyHeader[124+i] - '0'); + } if( nNextFileSize > GINTBIG_MAX ) { CPLError(CE_Failure, CPLE_AppDefined, @@ -354,7 +357,10 @@ nModifiedTime = 0; for(int i=0;i<11;i++) - nModifiedTime = nModifiedTime * 8 + (abyHeader[136+i] - '0'); + { + if( abyHeader[136+i] != ' ' ) + nModifiedTime = nModifiedTime * 8 + (abyHeader[136+i] - '0'); + } nCurOffset = VSIFTellL(fp); diff -Nru gdal-2.4.0+dfsg/port/cpl_vsil_webhdfs.cpp gdal-2.4.2+dfsg/port/cpl_vsil_webhdfs.cpp --- gdal-2.4.0+dfsg/port/cpl_vsil_webhdfs.cpp 2018-12-14 21:39:35.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_vsil_webhdfs.cpp 2019-06-28 11:12:17.000000000 +0000 @@ -39,7 +39,7 @@ #include "cpl_alibaba_oss.h" -CPL_CVSID("$Id: cpl_vsil_webhdfs.cpp beade9d55838ac41f7a798dceb5fce56213a0336 2018-11-08 11:23:07 +0100 Even Rouault $") +CPL_CVSID("$Id: cpl_vsil_webhdfs.cpp 3c353422ddd6f5d290f304f18af31a60ef90708e 2019-06-21 00:39:58 +0200 Even Rouault $") #ifndef HAVE_CURL @@ -1116,7 +1116,7 @@ // pause. const double dfNewRetryDelay = CPLHTTPGetNewRetryDelay( static_cast(response_code), dfRetryDelay, - nullptr); + nullptr, szCurlErrBuf); if( dfNewRetryDelay > 0 && nRetryCount < m_nMaxRetry ) { diff -Nru gdal-2.4.0+dfsg/port/cpl_vsisimple.cpp gdal-2.4.2+dfsg/port/cpl_vsisimple.cpp --- gdal-2.4.0+dfsg/port/cpl_vsisimple.cpp 2018-12-14 21:39:35.000000000 +0000 +++ gdal-2.4.2+dfsg/port/cpl_vsisimple.cpp 2019-06-28 11:12:16.000000000 +0000 @@ -92,7 +92,7 @@ extern "C" GIntBig CPL_DLL CPL_STDCALL GDALGetCacheUsed64(void); #endif -CPL_CVSID("$Id: cpl_vsisimple.cpp 5351335ba828ebad16e5f391b8cf400cf59510bf 2018-05-23 14:20:00 +0200 Even Rouault $") +CPL_CVSID("$Id: cpl_vsisimple.cpp 549bdc036c42c3562186f2148701f3c6fb68e4f6 2018-12-23 11:20:51 +0100 Even Rouault $") /* Unix or Windows NT/2000/XP */ #if !defined(WIN32) @@ -1466,7 +1466,13 @@ #endif #if HAVE_GETRLIMIT struct rlimit sLimit; - if( getrlimit( RLIMIT_AS, &sLimit) == 0 && +# if HAVE_RLIMIT_AS + const int res = RLIMIT_AS; +# else + // OpenBSD currently doesn't support RLIMIT_AS (mandated by Posix though) + const int res = RLIMIT_DATA; +# endif + if( getrlimit( res, &sLimit) == 0 && sLimit.rlim_cur != RLIM_INFINITY && static_cast(sLimit.rlim_cur) < nRAM ) { diff -Nru gdal-2.4.0+dfsg/scripts/gdal-bash-completion.sh gdal-2.4.2+dfsg/scripts/gdal-bash-completion.sh --- gdal-2.4.0+dfsg/scripts/gdal-bash-completion.sh 2018-12-14 21:39:37.000000000 +0000 +++ gdal-2.4.2+dfsg/scripts/gdal-bash-completion.sh 2019-06-28 11:12:23.000000000 +0000 @@ -143,7 +143,7 @@ _get_comp_words_by_ref cur prev case "$cur" in -*) - key_list="-b -a -3d -inodata -snodata -f -i -dsco -lco -off -fl -nln -q " + key_list="-b -a -amin -amax -3d -inodata -snodata -f -i -dsco -lco -off -fl -e -nln -q -p " mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur") return 0 ;; @@ -173,7 +173,7 @@ _get_comp_words_by_ref cur prev case "$cur" in -*) - key_list="--help-general -ro -a_srs -a_ullr -tr -unsetgt -a_nodata -unsetnodata -offset -scale -colorinterp_X -unsetstats -stats -approx_stats -gcp -unsetmd -oo -mo --version --license --formats --format --optfile --config --debug --pause --locale " + key_list="--help-general -ro -a_srs -a_ullr -tr -unsetgt -unsetrpc -a_nodata -unsetnodata -offset -scale -colorinterp_X -unsetstats -stats -approx_stats -setstats -gcp -unsetmd -oo -mo --version --license --formats --format --optfile --config --debug --pause --locale " mapfile -t COMPREPLY < <(compgen -W "$key_list" -- "$cur") return 0 ;; diff -Nru gdal-2.4.0+dfsg/swig/include/gdal_array.i gdal-2.4.2+dfsg/swig/include/gdal_array.i --- gdal-2.4.0+dfsg/swig/include/gdal_array.i 2018-12-14 21:39:45.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/include/gdal_array.i 2019-06-28 11:10:46.000000000 +0000 @@ -1,5 +1,5 @@ /****************************************************************************** - * $Id: gdal_array.i c92cc7b9bd8a8ae987d1ee2a1f764787ec3ef445 2018-09-16 10:52:21 +0900 Hiroshi Miura $ + * $Id: gdal_array.i b0264ceb0c9cb390ed2d76638599826f881db61e 2019-01-09 21:23:21 +0100 Even Rouault $ * * Name: gdal_array.i * Project: GDAL Python Interface @@ -1213,6 +1213,9 @@ if typecode is None: buf_type = gdalconst.GDT_Float32 typecode = numpy.float32 + else: + buf_type = NumericTypeCodeToGDALTypeCode(typecode) + if buf_type == gdalconst.GDT_Byte and ds.GetRasterBand(1).GetMetadataItem('PIXELTYPE', 'IMAGE_STRUCTURE') == 'SIGNEDBYTE': typecode = numpy.int8 buf_shape = (ds.RasterCount, buf_ysize, buf_xsize) if interleave else (buf_ysize, buf_xsize, ds.RasterCount) diff -Nru gdal-2.4.0+dfsg/swig/include/perl/gdal_perl.i gdal-2.4.2+dfsg/swig/include/perl/gdal_perl.i --- gdal-2.4.0+dfsg/swig/include/perl/gdal_perl.i 2018-12-14 21:39:46.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/include/perl/gdal_perl.i 2019-06-28 11:10:47.000000000 +0000 @@ -143,8 +143,8 @@ # Note that the 1/100000 digits may be used to create more than one # CPAN release from one GDAL release. -our $VERSION = '2.0400'; -our $GDAL_VERSION = '2.4.0'; +our $VERSION = '2.0402'; +our $GDAL_VERSION = '2.4.2'; =pod diff -Nru gdal-2.4.0+dfsg/swig/include/perl/ogr_perl.i gdal-2.4.2+dfsg/swig/include/perl/ogr_perl.i --- gdal-2.4.0+dfsg/swig/include/perl/ogr_perl.i 2018-12-14 21:39:47.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/include/perl/ogr_perl.i 2019-06-28 11:10:47.000000000 +0000 @@ -126,7 +126,7 @@ %perlcode %{ package Geo::OGR; -our $VERSION = '2.0400'; # this needs to be the same as that in gdal_perl.i +our $VERSION = '2.0402'; # this needs to be the same as that in gdal_perl.i Geo::GDAL->import(qw(:INTERNAL)); diff -Nru gdal-2.4.0+dfsg/swig/perl/lib/Geo/GDAL.pm gdal-2.4.2+dfsg/swig/perl/lib/Geo/GDAL.pm --- gdal-2.4.0+dfsg/swig/perl/lib/Geo/GDAL.pm 2018-12-14 21:40:09.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/perl/lib/Geo/GDAL.pm 2019-06-28 11:14:44.000000000 +0000 @@ -1091,8 +1091,8 @@ # Note that the 1/100000 digits may be used to create more than one # CPAN release from one GDAL release. -our $VERSION = '2.0400'; -our $GDAL_VERSION = '2.4.0'; +our $VERSION = '2.0402'; +our $GDAL_VERSION = '2.4.2'; =pod diff -Nru gdal-2.4.0+dfsg/swig/perl/lib/Geo/OGR.pm gdal-2.4.2+dfsg/swig/perl/lib/Geo/OGR.pm --- gdal-2.4.0+dfsg/swig/perl/lib/Geo/OGR.pm 2018-12-14 21:40:10.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/perl/lib/Geo/OGR.pm 2019-06-28 11:14:45.000000000 +0000 @@ -964,7 +964,7 @@ package Geo::OGR; -our $VERSION = '2.0400'; # this needs to be the same as that in gdal_perl.i +our $VERSION = '2.0402'; # this needs to be the same as that in gdal_perl.i Geo::GDAL->import(qw(:INTERNAL)); diff -Nru gdal-2.4.0+dfsg/swig/python/osgeo/gdal_array.py gdal-2.4.2+dfsg/swig/python/osgeo/gdal_array.py --- gdal-2.4.0+dfsg/swig/python/osgeo/gdal_array.py 2018-12-14 21:40:01.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/osgeo/gdal_array.py 2019-06-28 11:11:00.000000000 +0000 @@ -296,6 +296,9 @@ if typecode is None: buf_type = gdalconst.GDT_Float32 typecode = numpy.float32 + else: + buf_type = NumericTypeCodeToGDALTypeCode(typecode) + if buf_type == gdalconst.GDT_Byte and ds.GetRasterBand(1).GetMetadataItem('PIXELTYPE', 'IMAGE_STRUCTURE') == 'SIGNEDBYTE': typecode = numpy.int8 buf_shape = (ds.RasterCount, buf_ysize, buf_xsize) if interleave else (buf_ysize, buf_xsize, ds.RasterCount) diff -Nru gdal-2.4.0+dfsg/swig/python/README.rst gdal-2.4.2+dfsg/swig/python/README.rst --- gdal-2.4.0+dfsg/swig/python/README.rst 1970-01-01 00:00:00.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/README.rst 2019-06-28 11:09:59.000000000 +0000 @@ -0,0 +1,216 @@ + +GDAL/OGR in Python +================== + +This Python package and extensions are a number of tools for programming and +manipulating the GDAL_ Geospatial Data Abstraction Library. Actually, it is +two libraries -- GDAL for manipulating geospatial raster data and OGR for +manipulating geospatial vector data -- but we'll refer to the entire package +as the GDAL library for the purposes of this document. + +The GDAL project (primarily Even Rouault) maintains SWIG generated Python +bindings for GDAL and OGR. Generally speaking the classes and methods mostly +match those of the GDAL and OGR C++ classes. There is no Python specific +reference documentation, but the `GDAL API Tutorial`_ includes Python examples. + +Dependencies +------------ + + * libgdal (2.4.2 or greater) and header files (gdal-devel) + * numpy (1.0.0 or greater) and header files (numpy-devel) (not explicitly + required, but many examples and utilities will not work without it) + +Installation +------------ + +Unix +~~~~~~~~~~~~~ + +The GDAL Python bindings support both distutils and setuptools, with a +preference for using setuptools. If setuptools can be imported, setup will +use that to build an egg by default. If setuptools cannot be imported, a +simple distutils root install of the GDAL package (and no dependency +chaining for numpy) will be made. + +easy_install +~~~~~~~~~~~~ + +GDAL can be installed from the Python CheeseShop:: + + $ sudo easy_install GDAL + +It may be necessary to have libgdal and its development headers installed +if easy_install is expected to do a source build because no egg is available +for your specified platform and Python version. + +setup.py +~~~~~~~~~ + +Most of setup.py's important variables are controlled with the setup.cfg +file. In setup.cfg, you can modify pointers to include files and libraries. +The most important option that will likely need to be modified is the +gdal_config parameter. If you installed GDAL from a package, the location +of this program is likely /usr/bin/gdal-config, but it may be in another place +depending on how your packager arranged things. + +After modifying the location of gdal-config, you can build and install +with the setup script:: + + $ python setup.py build + $ python setup.py install + +If you have setuptools installed, you can also generate an egg:: + + $ python setup.py bdist_egg + +Building as part of the GDAL library source tree +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can also have the GDAL Python bindings built as part of a source +build by specifying --with-python as part of your configure line:: + + $ ./configure --with-python + +Use the typical make and make install commands to complete the installation:: + + $ make + $ make install + +A note about setuptools +....................... + +./configure attempts to detect if you have setuptools installed in the tree +of the Python binary it was given (or detected on the execution path), and it +will use an egg build by default in that instance. If you have a need to +use a distutils-only install, you will have to edit setup.py to ensure that +the HAVE_SETUPTOOLS variable is ultimately set to False and proceed with a +typical 'python setup.py install' command. + +Windows +~~~~~~~~~~~~ + +You will need the following items to complete an install of the GDAL Python +bindings on Windows: + +* `GDAL Windows Binaries`_ Download the package that best matches your environment. + +As explained in the README_EXE.txt file, after unzipping the GDAL binaries you +will need to modify your system path and variables. If you're not sure how to +do this, read the `Microsoft Knowledge Base doc`_ + +1. Add the installation directory bin folder to your system PATH, remember + to put a semicolon in front of it before you add to the existing path. + + :: + + C:\gdalwin32-1.7\bin + +2. Create a new user or system variable with the data folder from + your installation. + + :: + + Name : GDAL_DATA + Path : C:\gdalwin32-1.7\data + +Skip down to the `Usage`_ section to test your install. Note, a reboot +may be required. + +SWIG +---- + +The GDAL Python package is built using SWIG_. The earliest version of SWIG_ +that is supported to generate the wrapper code is 1.3.40. It is possible +that usable bindings will build with a version earlier than 1.3.40, but no +development efforts are targeted at versions below it. You should not have +to run SWIG in your development tree to generate the binding code, as it +is usually included with the source. However, if you do need to regenerate, +you can do so with the following make command from within the ./swig/python +directory:: + + $ make generate + +To ensure that all of the bindings are regenerated, you can clean the +bindings code out before the generate command by issuing:: + + $ make veryclean + +Usage +----- + +Imports +~~~~~~~ + +There are five major modules that are included with the GDAL_ Python bindings.:: + + >>> from osgeo import gdal + >>> from osgeo import ogr + >>> from osgeo import osr + >>> from osgeo import gdal_array + >>> from osgeo import gdalconst + +Additionally, there are five compatibility modules that are included but +provide notices to state that they are deprecated and will be going away. +If you are using GDAL 1.7 bindings, you should update your imports to utilize +the usage above, but the following will work until at least GDAL 2.1. :: + + >>> import gdal + >>> import ogr + >>> import osr + >>> import gdalnumeric + >>> import gdalconst + +If you have previous code that imported the global module and still need to +support the old import, a simple try...except import can silence the +deprecation warning and keep things named essentially the same as before:: + + >>> try: + ... from osgeo import gdal + ... except ImportError: + ... import gdal + +Docstrings +~~~~~~~~~~ + +Currently, only the OGR module has docstrings which are generated from the +C/C++ API doxygen materials. Some of the arguments and types might not +match up exactly with what you are seeing from Python, but they should be +enough to get you going. Docstrings for GDAL and OSR are planned for a future +release. + +Numpy/Numeric +------------- + +One advanced feature of the GDAL Python bindings not found in the other +language bindings (C#, Perl) is integration with the Python numerical array +facilities. The gdal.Dataset.ReadAsArray() method can be used to read raster +data as numerical arrays, ready to use with the Python numerical array +capabilities. + +These facilities have evolved somewhat over time. In the past the package was +known as "Numeric" and imported using "import Numeric". A new generation is +imported using "import numpy". Currently the old generation bindings only +support the older Numeric package, and the new generation bindings only +support the new generation numpy package. They are mostly compatible, and +by importing gdalnumeric (or osgeo.gdal_array) you will get whichever is +appropriate to the current bindings type. + +Examples +~~~~~~~~ + +One example of GDAL/numpy integration is found in the `val_repl.py`_ script. + +Performance Notes +~~~~~~~~~~~~~~~~~ + +ReadAsArray expects to make an entire copy of a raster band or dataset unless +the data are explicitly subsetted as part of the function call. For large +data, this approach is expected to be prohibitively memory intensive. + +.. _GDAL API Tutorial: http://www.gdal.org/gdal_tutorial.html +.. _GDAL Windows Binaries: http://gisinternals.com/sdk/ +.. _Microsoft Knowledge Base doc: http://support.microsoft.com/kb/310519 +.. _Python Cheeseshop: http://pypi.python.org/pypi/GDAL/ +.. _val_repl.py: http://trac.osgeo.org/gdal/browser/trunk/gdal/swig/python/samples/val_repl.py +.. _GDAL: http://www.gdal.org +.. _SWIG: http://www.swig.org diff -Nru gdal-2.4.0+dfsg/swig/python/README.txt gdal-2.4.2+dfsg/swig/python/README.txt --- gdal-2.4.0+dfsg/swig/python/README.txt 2018-12-14 21:34:20.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/README.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,216 +0,0 @@ - -GDAL/OGR in Python -================== - -This Python package and extensions are a number of tools for programming and -manipulating the GDAL_ Geospatial Data Abstraction Library. Actually, it is -two libraries -- GDAL for manipulating geospatial raster data and OGR for -manipulating geospatial vector data -- but we'll refer to the entire package -as the GDAL library for the purposes of this document. - -The GDAL project (primarily Even Rouault) maintains SWIG generated Python -bindings for GDAL and OGR. Generally speaking the classes and methods mostly -match those of the GDAL and OGR C++ classes. There is no Python specific -reference documentation, but the `GDAL API Tutorial`_ includes Python examples. - -Dependencies ------------- - - * libgdal (2.4.0 or greater) and header files (gdal-devel) - * numpy (1.0.0 or greater) and header files (numpy-devel) (not explicitly - required, but many examples and utilities will not work without it) - -Installation ------------- - -Unix -~~~~~~~~~~~~~ - -The GDAL Python bindings support both distutils and setuptools, with a -preference for using setuptools. If setuptools can be imported, setup will -use that to build an egg by default. If setuptools cannot be imported, a -simple distutils root install of the GDAL package (and no dependency -chaining for numpy) will be made. - -easy_install -~~~~~~~~~~~~ - -GDAL can be installed from the Python CheeseShop:: - - $ sudo easy_install GDAL - -It may be necessary to have libgdal and its development headers installed -if easy_install is expected to do a source build because no egg is available -for your specified platform and Python version. - -setup.py -~~~~~~~~~ - -Most of setup.py's important variables are controlled with the setup.cfg -file. In setup.cfg, you can modify pointers to include files and libraries. -The most important option that will likely need to be modified is the -gdal_config parameter. If you installed GDAL from a package, the location -of this program is likely /usr/bin/gdal-config, but it may be in another place -depending on how your packager arranged things. - -After modifying the location of gdal-config, you can build and install -with the setup script:: - - $ python setup.py build - $ python setup.py install - -If you have setuptools installed, you can also generate an egg:: - - $ python setup.py bdist_egg - -Building as part of the GDAL library source tree -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -You can also have the GDAL Python bindings built as part of a source -build by specifying --with-python as part of your configure line:: - - $ ./configure --with-python - -Use the typical make and make install commands to complete the installation:: - - $ make - $ make install - -A note about setuptools -....................... - -./configure attempts to detect if you have setuptools installed in the tree -of the Python binary it was given (or detected on the execution path), and it -will use an egg build by default in that instance. If you have a need to -use a distutils-only install, you will have to edit setup.py to ensure that -the HAVE_SETUPTOOLS variable is ultimately set to False and proceed with a -typical 'python setup.py install' command. - -Windows -~~~~~~~~~~~~ - -You will need the following items to complete an install of the GDAL Python -bindings on Windows: - -* `GDAL Windows Binaries`_ Download the package that best matches your environment. - -As explained in the README_EXE.txt file, after unzipping the GDAL binaries you -will need to modify your system path and variables. If you're not sure how to -do this, read the `Microsoft KnowledgeBase doc`_ - -1. Add the installation directory bin folder to your system PATH, remember - to put a semicolon in front of it before you add to the existing path. - - :: - - C:\gdalwin32-1.7\bin - -2. Create a new user or system variable with the data folder from - your installation. - - :: - - Name : GDAL_DATA - Path : C:\gdalwin32-1.7\data - -Skip down to the `Usage`_ section to test your install. Note, a reboot -may be required. - -SWIG ----- - -The GDAL Python package is built using SWIG_. The earliest version of SWIG_ -that is supported to generate the wrapper code is 1.3.40. It is possible -that usable bindings will build with a version earlier than 1.3.40, but no -development efforts are targeted at versions below it. You should not have -to run SWIG in your development tree to generate the binding code, as it -is usually included with the source. However, if you do need to regenerate, -you can do so with the following make command from within the ./swig/python -directory:: - - $ make generate - -To ensure that all of the bindings are regenerated, you can clean the -bindings code out before the generate command by issuing:: - - $ make veryclean - -Usage ------ - -Imports -~~~~~~~ - -There are five major modules that are included with the GDAL_ Python bindings.:: - - >>> from osgeo import gdal - >>> from osgeo import ogr - >>> from osgeo import osr - >>> from osgeo import gdal_array - >>> from osgeo import gdalconst - -Additionally, there are five compatibility modules that are included but -provide notices to state that they are deprecated and will be going away. -If you are using GDAL 1.7 bindings, you should update your imports to utilize -the usage above, but the following will work until at least GDAL 2.1. :: - - >>> import gdal - >>> import ogr - >>> import osr - >>> import gdalnumeric - >>> import gdalconst - -If you have previous code that imported the global module and still need to -support the old import, a simple try...except import can silence the -deprecation warning and keep things named essentially the same as before:: - - >>> try: - ... from osgeo import gdal - ... except ImportError: - ... import gdal - -Docstrings -~~~~~~~~~~ - -Currently, only the OGR module has docstrings which are generated from the -C/C++ API doxygen materials. Some of the arguments and types might not -match up exactly with what you are seeing from Python, but they should be -enough to get you going. Docstrings for GDAL and OSR are planned for a future -release. - -Numpy/Numeric -------------- - -One advanced feature of the GDAL Python bindings not found in the other -language bindings (C#, Perl) is integration with the Python numerical array -facilities. The gdal.Dataset.ReadAsArray() method can be used to read raster -data as numerical arrays, ready to use with the Python numerical array -capabilities. - -These facilities have evolved somewhat over time. In the past the package was -known as "Numeric" and imported using "import Numeric". A new generation is -imported using "import numpy". Currently the old generation bindings only -support the older Numeric package, and the new generation bindings only -support the new generation numpy package. They are mostly compatible, and -by importing gdalnumeric (or osgeo.gdal_array) you will get whichever is -appropriate to the current bindings type. - -Examples -~~~~~~~~ - -One example of GDAL/numpy integration is found in the `val_repl.py`_ script. - -Performance Notes -~~~~~~~~~~~~~~~~~ - -ReadAsArray expects to make an entire copy of a raster band or dataset unless -the data are explicitly subsetted as part of the function call. For large -data, this approach is expected to be prohibitively memory intensive. - -.. _GDAL API Tutorial: http://www.gdal.org/gdal_tutorial.html -.. _GDAL Windows Binaries: http://gisinternals.com/sdk/ -.. _Microsoft Knowledge Base doc: http://support.microsoft.com/kb/310519 -.. _Python Cheeseshop: http://pypi.python.org/pypi/GDAL/ -.. _val_repl.py: http://trac.osgeo.org/gdal/browser/trunk/gdal/swig/python/samples/val_repl.py -.. _GDAL: http://www.gdal.org -.. _SWIG: http://www.swig.org diff -Nru gdal-2.4.0+dfsg/swig/python/samples/validate_gpkg.py gdal-2.4.2+dfsg/swig/python/samples/validate_gpkg.py --- gdal-2.4.0+dfsg/swig/python/samples/validate_gpkg.py 2018-12-14 21:40:04.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/samples/validate_gpkg.py 2019-06-28 11:10:57.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- ############################################################################### -# $Id: validate_gpkg.py 371ebe3983688f29e551259497b1781d429ce00b 2018-11-29 12:32:42 +0200 jratike80 $ +# $Id: validate_gpkg.py 3a387ceeca8dcb9dea0f3934f65ab13360233473 2019-03-12 18:09:43 +0100 Even Rouault $ # # Project: GDAL/OGR # Purpose: Test compliance of GeoPackage database w.r.t GeoPackage spec diff -Nru gdal-2.4.0+dfsg/swig/python/scripts/gdal2tiles.py gdal-2.4.2+dfsg/swig/python/scripts/gdal2tiles.py --- gdal-2.4.0+dfsg/swig/python/scripts/gdal2tiles.py 2018-12-14 21:40:04.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/scripts/gdal2tiles.py 2019-06-28 11:10:56.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # ****************************************************************************** -# $Id: gdal2tiles.py 1f32f6fdbfd2fd352047db41d316d8afbe3c3319 2018-11-30 01:05:06 +0100 Even Rouault $ +# $Id: gdal2tiles.py fae3a65f16af509cf9e0dd16cd16858d8e49eb25 2019-03-12 15:23:57 -0700 Kevin Mehall $ # # Project: Google Summer of Code 2007, 2008 (http://code.google.com/soc/) # Support: BRGM (http://www.brgm.fr) @@ -61,7 +61,7 @@ # 'antialias' resampling is not available numpy_available = False -__version__ = "$Id: gdal2tiles.py 1f32f6fdbfd2fd352047db41d316d8afbe3c3319 2018-11-30 01:05:06 +0100 Even Rouault $" +__version__ = "$Id: gdal2tiles.py fae3a65f16af509cf9e0dd16cd16858d8e49eb25 2019-03-12 15:23:57 -0700 Kevin Mehall $" resampling_list = ('average', 'near', 'bilinear', 'cubic', 'cubicspline', 'lanczos', 'antialias') profile_list = ('mercator', 'geodetic', 'raster') @@ -1509,8 +1509,8 @@ if not self.warped_input_dataset: self.warped_input_dataset = input_dataset - self.warped_input_dataset.GetDriver().CreateCopy(self.tmp_vrt_filename, - self.warped_input_dataset) + gdal.GetDriverByName('VRT').CreateCopy(self.tmp_vrt_filename, + self.warped_input_dataset) # Get alpha band (either directly or from NODATA value) self.alphaband = self.warped_input_dataset.GetRasterBand(1).GetMaskBand() @@ -2355,19 +2355,19 @@ // Base layers // .. OpenStreetMap - var osm = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {attribution: '© OpenStreetMap contributors'}); + var osm = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {attribution: '© OpenStreetMap contributors', minZoom: %(minzoom)s, maxZoom: %(maxzoom)s}); // .. CartoDB Positron - var cartodb = L.tileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {attribution: '© OpenStreetMap contributors, © CartoDB'}); + var cartodb = L.tileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {attribution: '© OpenStreetMap contributors, © CartoDB', minZoom: %(minzoom)s, maxZoom: %(maxzoom)s}); // .. OSM Toner - var toner = L.tileLayer('http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png', {attribution: 'Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.'}); + var toner = L.tileLayer('http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png', {attribution: 'Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.', minZoom: %(minzoom)s, maxZoom: %(maxzoom)s}); // .. White background - var white = L.tileLayer("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEX///+nxBvIAAAAH0lEQVQYGe3BAQ0AAADCIPunfg43YAAAAAAAAAAA5wIhAAAB9aK9BAAAAABJRU5ErkJggg=="); + var white = L.tileLayer("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEX///+nxBvIAAAAH0lEQVQYGe3BAQ0AAADCIPunfg43YAAAAAAAAAAA5wIhAAAB9aK9BAAAAABJRU5ErkJggg==", {minZoom: %(minzoom)s, maxZoom: %(maxzoom)s}); // Overlay layers (TMS) - var lyr = L.tileLayer('./{z}/{x}/{y}.%(tileformat)s', {tms: true, opacity: 0.7, attribution: "%(copyright)s"}); + var lyr = L.tileLayer('./{z}/{x}/{y}.%(tileformat)s', {tms: true, opacity: 0.7, attribution: "%(copyright)s", minZoom: %(minzoom)s, maxZoom: %(maxzoom)s}); // Map var map = L.map('map', { @@ -2638,8 +2638,8 @@ function getURL(bounds) { bounds = this.adjustBounds(bounds); var res = this.getServerResolution(); - var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tile_size.w)); - var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tile_size.h)); + var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w)); + var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h)); var z = this.getServerZoom(); if (this.map.baseLayer.CLASS_NAME === 'OpenLayers.Layer.Bing') { z+=1; @@ -2662,8 +2662,8 @@ function getURL(bounds) { bounds = this.adjustBounds(bounds); var res = this.getServerResolution(); - var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tile_size.w)); - var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tile_size.h)); + var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w)); + var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h)); var z = this.getServerZoom()%(tmsoffset)s; var path = this.serviceVersion + "/" + this.layername + "/" + z + "/" + x + "/" + y + "." + this.type; var url = this.url; @@ -2683,8 +2683,8 @@ function getURL(bounds) { bounds = this.adjustBounds(bounds); var res = this.getServerResolution(); - var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tile_size.w)); - var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tile_size.h)); + var x = Math.round((bounds.left - this.tileOrigin.lon) / (res * this.tileSize.w)); + var y = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * this.tileSize.h)); var z = this.getServerZoom(); var path = this.serviceVersion + "/" + this.layername + "/" + z + "/" + x + "/" + y + "." + this.type; var url = this.url; diff -Nru gdal-2.4.0+dfsg/swig/python/scripts/gdal_calc.py gdal-2.4.2+dfsg/swig/python/scripts/gdal_calc.py --- gdal-2.4.0+dfsg/swig/python/scripts/gdal_calc.py 2018-12-14 21:40:04.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/scripts/gdal_calc.py 2019-06-28 11:10:57.000000000 +0000 @@ -249,9 +249,6 @@ # use the block size of the first layer to read efficiently myBlockSize = myFiles[0].GetRasterBand(myBands[0]).GetBlockSize() - # store these numbers in variables that may change later - nXValid = myBlockSize[0] - nYValid = myBlockSize[1] # find total x and y blocks to be read nXBlocks = (int)((DimensionsCheck[0] + myBlockSize[0] - 1) / myBlockSize[0]) nYBlocks = (int)((DimensionsCheck[1] + myBlockSize[1] - 1) / myBlockSize[1]) @@ -274,15 +271,18 @@ ################################################################ # start looping through blocks of data ################################################################ + + # store these numbers in variables that may change later + nXValid = myBlockSize[0] + nYValid = myBlockSize[1] # loop through X-lines for X in range(0, nXBlocks): - # in the rare (impossible?) case that the blocks don't fit perfectly + # in case the blocks don't fit perfectly # change the block size of the final piece if X == nXBlocks - 1: nXValid = DimensionsCheck[0] - X * myBlockSize[0] - myBufSize = nXValid * nYValid # find X offset myX = X * myBlockSize[0] diff -Nru gdal-2.4.0+dfsg/swig/python/scripts/gdal_polygonize.py gdal-2.4.2+dfsg/swig/python/scripts/gdal_polygonize.py --- gdal-2.4.0+dfsg/swig/python/scripts/gdal_polygonize.py 2018-12-14 21:40:05.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/scripts/gdal_polygonize.py 2019-06-28 11:10:55.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # ****************************************************************************** -# $Id: gdal_polygonize.py 8e263710cb425c4a8b76b1f363b98be41ea0a983 2018-04-30 19:40:20 +1000 Ben Elliston $ +# $Id: gdal_polygonize.py 5b7c3576ad84af5b8cb446ba1edc1d118cc2bb0a 2019-05-21 00:11:23 +0200 Even Rouault $ # # Project: GDAL Python Interface # Purpose: Application for converting raster data to a vector polygon layer. @@ -78,14 +78,14 @@ def GetOutputDriverFor(filename): drv_list = GetOutputDriversFor(filename) + ext = GetExtension(filename) if not drv_list: - ext = GetExtension(filename) if not ext: return 'ESRI Shapefile' else: raise Exception("Cannot guess driver for %s" % filename) elif len(drv_list) > 1: - print("Several drivers matching %s extension. Using %s" % (ext, drv_list[0])) + print("Several drivers matching %s extension. Using %s" % (ext if ext else '', drv_list[0])) return drv_list[0] # ============================================================================= diff -Nru gdal-2.4.0+dfsg/swig/python/scripts/gdal_retile.py gdal-2.4.2+dfsg/swig/python/scripts/gdal_retile.py --- gdal-2.4.0+dfsg/swig/python/scripts/gdal_retile.py 2018-12-14 21:40:05.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/scripts/gdal_retile.py 2019-06-28 11:10:55.000000000 +0000 @@ -1,6 +1,6 @@ #!/usr/bin/env python ############################################################################### -# $Id: gdal_retile.py a767b4ab5cd85e0e2884759a8b8b70fe0e8475b2 2018-06-18 15:18:16 +0200 Even Rouault $ +# $Id: gdal_retile.py 83ccdc0d761c2c3bdb40f7c726958b7cb43944cb 2019-02-22 12:37:35Z DanielEvans $ # # Purpose: Module for retiling (merging) tiles and building tiled pyramids # Author: Christian Meuller, christian.mueller@nvoe.at @@ -148,6 +148,7 @@ self.bands = fhInputTile.RasterCount self.band_type = fhInputTile.GetRasterBand(1).DataType self.projection = fhInputTile.GetProjection() + self.nodata = fhInputTile.GetRasterBand(1).GetNoDataValue() dec = AffineTransformDecorator(fhInputTile.GetGeoTransform()) self.scaleX = dec.scaleX @@ -209,6 +210,12 @@ resultDS = self.TempDriver.Create("TEMP", resultSizeX, resultSizeY, self.bands, self.band_type, []) resultDS.SetGeoTransform([minx, self.scaleX, 0, maxy, 0, self.scaleY]) + for bandNr in range(1, self.bands + 1): + t_band = resultDS.GetRasterBand(bandNr) + if self.nodata is not None: + t_band.Fill(self.nodata) + t_band.SetNoDataValue(self.nodata) + for feature in features: featureName = feature.GetField(0) sourceDS = self.cache.get(featureName) @@ -240,8 +247,6 @@ tw_yoff = int((tgw_uly - maxy) / self.scaleY + 0.5) tw_xsize = min(resultDS.RasterXSize, int((tgw_lrx - minx) / self.scaleX + 0.5)) - tw_xoff tw_ysize = min(resultDS.RasterYSize, int((tgw_lry - maxy) / self.scaleY + 0.5)) - tw_yoff - # print(sw_xoff, sw_yoff, sw_xsize, sw_ysize, sourceDS.RasterXSize, sourceDS.RasterYSize) - # print(tw_xoff, tw_yoff, tw_xsize, tw_ysize, resultDS.RasterXSize, resultDS.RasterYSize) if tw_xsize <= 0 or tw_ysize <= 0: continue @@ -456,6 +461,12 @@ t_band.SetRasterColorTable(levelMosaicInfo.ct) t_band.SetRasterColorInterpretation(levelMosaicInfo.ci[band - 1]) + if levelMosaicInfo.nodata is not None: + for band in range(1, bands + 1): + t_band = t_fh.GetRasterBand(band) + t_band.Fill(levelMosaicInfo.nodata) + t_band.SetNoDataValue(levelMosaicInfo.nodata) + res = gdal.ReprojectImage(s_fh, t_fh, None, None, ResamplingMethod) if res != 0: print("Reprojection failed for %s, error %d" % (tileName, res)) @@ -522,8 +533,10 @@ t_band = t_fh.GetRasterBand(band) if minfo.ct is not None: t_band.SetRasterColorTable(minfo.ct) + if minfo.nodata is not None: + t_band.Fill(minfo.nodata) + t_band.SetNoDataValue(minfo.nodata) -# data = s_band.ReadRaster( offsetX,offsetY,width,height,width,height, t_band.DataType ) data = s_band.ReadRaster(0, 0, readX, readY, readX, readY, t_band.DataType) t_band.WriteRaster(0, 0, readX, readY, data, readX, readY, t_band.DataType) diff -Nru gdal-2.4.0+dfsg/swig/python/scripts/ogrmerge.py gdal-2.4.2+dfsg/swig/python/scripts/ogrmerge.py --- gdal-2.4.0+dfsg/swig/python/scripts/ogrmerge.py 2018-12-14 21:40:06.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/scripts/ogrmerge.py 2019-06-28 11:10:56.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- ############################################################################### -# $Id: ogrmerge.py 545d0423e15cc28a5aca3a9852fab80b80601162 2018-12-12 11:49:36 +1300 Craig de Stigter $ +# $Id: ogrmerge.py 5b7c3576ad84af5b8cb446ba1edc1d118cc2bb0a 2019-05-21 00:11:23 +0200 Even Rouault $ # # Project: GDAL/OGR samples # Purpose: Merge the content of several vector datasets into a single one. @@ -110,7 +110,7 @@ else: raise Exception("Cannot guess driver for %s" % filename) elif len(drv_list) > 1: - print("Several drivers matching %s extension. Using %s" % (ext, drv_list[0])) + print("Several drivers matching %s extension. Using %s" % (ext if ext else '', drv_list[0])) return drv_list[0] ############################################################################# @@ -453,13 +453,15 @@ writer.open_element('OGRVRTLayer', attrs={'name': layer_name}) - attrs = None + attrs = {} if EQUAL(output_format, 'VRT') and \ os.path.exists(src_dsname) and \ not os.path.isabs(src_dsname) and \ '/' not in vrt_filename and \ '\\' not in vrt_filename: - attrs = {'relativeToVRT': '1'} + attrs['relativeToVRT'] = '1' + if single_layer: + attrs['shared'] = '1' writer.write_element_value('SrcDataSource', src_dsname, attrs=attrs) writer.write_element_value('SrcLayer', src_lyr.GetName()) @@ -550,13 +552,15 @@ writer.open_element('OGRVRTLayer', attrs={'name': layer_name}) - attrs = None + attrs = {} if EQUAL(output_format, 'VRT') and \ os.path.exists(src_dsname) and \ not os.path.isabs(src_dsname) and \ '/' not in vrt_filename and \ '\\' not in vrt_filename: - attrs = {'relativeToVRT': '1'} + attrs['relativeToVRT'] = '1' + if single_layer: + attrs['shared'] = '1' writer.write_element_value('SrcDataSource', src_dsname, attrs=attrs) writer.write_element_value('SrcLayer', src_lyr_name) diff -Nru gdal-2.4.0+dfsg/swig/python/setup.py gdal-2.4.2+dfsg/swig/python/setup.py --- gdal-2.4.0+dfsg/swig/python/setup.py 2018-12-14 21:40:07.000000000 +0000 +++ gdal-2.4.2+dfsg/swig/python/setup.py 2019-06-28 11:10:54.000000000 +0000 @@ -7,7 +7,7 @@ # Howard Butler hobu.inc@gmail.com -gdal_version = '2.4.0' +gdal_version = '2.4.2' import sys import os @@ -364,7 +364,7 @@ packages = ["osgeo", ] -readme = str(open('README.txt', 'rb').read()) +readme = str(open('README.rst', 'rb').read()) name = 'GDAL' version = gdal_version @@ -408,6 +408,7 @@ maintainer=maintainer, maintainer_email=maintainer_email, long_description=readme, + long_description_content_type='text/x-rst', description=description, license=license_type, classifiers=classifiers, diff -Nru gdal-2.4.0+dfsg/VERSION gdal-2.4.2+dfsg/VERSION --- gdal-2.4.0+dfsg/VERSION 2018-12-14 21:40:10.000000000 +0000 +++ gdal-2.4.2+dfsg/VERSION 2019-06-28 11:14:46.000000000 +0000 @@ -1 +1 @@ -2.4.0 +2.4.2