Skip to content
Commits on Source (18)
......@@ -121,7 +121,7 @@ GDAL_INCLUDE = -I$(GDAL_ROOT)/port -I$(GDAL_ROOT)/gcore \
# libtool targets and help variables
LIBGDAL := libgdal.la
LIBGDAL_CURRENT := 24
LIBGDAL_REVISION := 2
LIBGDAL_REVISION := 3
LIBGDAL_AGE := 4
# native build targets and variables
......@@ -473,6 +473,7 @@ 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_PLUGIN_LIB = @POPPLER_PLUGIN_LIB@
......
= GDAL/OGR 2.3.2 Release Notes =
= GDAL/OGR 2.3.3 Release Notes =
 
The 2.3.2 release is a bug fix release.
The 2.3.3 release is a bug fix release.
 
== Build ==
 
Unix:
* fix potential link errors when using internal libgif and internal libpng but headers of those libraries are available in the system in different versions than our internal ones (#938)
All:
* Add support for Poppler 0.69 (#1004) and 0.71 (#1121)
== Port ==
* /vsiaz/: support BlobEndpoint element in AZURE_STORAGE_CONNECTION_STRING such as found in Azurite (#957)
* /vsis3/: detect Amazon EC2 instances that use the newer hypervisor (#958)
* /vsis3/: honour CPL_VSIL_CURL_ALLOWED_EXTENSIONS configuration option (#995)
* /vsicurl/: fix parsing of HTML file listing that got broken in GDAL 2.3.0
== GDAL utilities ==
* gdalwarp: fix crash when warping on an existing dataset with less bands as needed
* gdal2tiles: rename 'tilesize' and 'tileSize' variables to 'tile_size' to have uniform spelling, and fix exception (#1127)
* gdal_grid: fix -clipsrc from a vector datasource (broken at least since GDAL 2.1)
== GDAL algorithms ==
* gdal_grid linear: fix detection of degenerate triangles (#973)
== GDAL drivers ==
FITS driver:
* allow reading/writing beyond 2 billion pixel limit
GeoRaster driver:
* Fix the issue by freeing the temporary lobs created by readCLob() and writeCLOB().
GPKG driver:
* properly delete gridded coverage raster layers
GRIB driver:
* interpret missing data values correctly for complex packing when original data is integer (#1063)
* fix writing of nodata value for complex value when original data is integer (#1063)
* add UNIT[] node to SRS on reading, so that is valid
GTiff driver:
* update COMPRESSION_ZSTD to the new value of 50000. Still recognize files created with 34926, but only in the branch, and emit warning
* internal libtiff: tif_lzma.c: report error in LZMAPreEncode() which can require a lot of memory; and skip gracefully in tests in that case (#1026)
IRIS driver:
* add UNIT[] node to SRS on reading, so that is valid
NetCDF driver:
* fix west > east if west should be < east (#1114)
PDS4 driver:
* add UNIT[] node to SRS on reading, so that is valid
RasterLite2 driver:
* fail on Create() that is not supported
RDA driver:
* enable support for DG RDA Image Reference string
VRT driver:
* deal with serialized nodata value that is slightly outside Float32 validity range (#1071)
WMTS driver:
* fix issue with inappropriate zoom level being selected causing integer overflow in raster dimension computation
* fix potential off-by-one pixel when compositing the underlying WMS/TMS source into the final raster
== OGR core ==
* SQLite dialect: fix when ROWID is used in WHERE clause and the source layer has a real FID column name
* GML geometry parser: recognize MultiGeometry.geometryMembers syntax (refs https://issues.qgis.org/issues/19571)
== OGRSpatialReference ==
* FindMatches(): if the input SRS has a EPSG code, check that its definition and the EPSG one actually matches (#990)
== OGR utilities ==
* ogr_merge.py: fix issue with non-ASCII characters (#1067)
== OGR drivers ==
DXF driver:
* fix memory leak in case of attempt to write GeometryCollection of unsupported type. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11516.
GeoJSON driver:
* RFC7946 writer: clip and offset geometries outside [-180,180] (#1068)
KML/LIBKML drivers:
* robustify for out-of-memory conditions (https://issues.qgis.org/issues/19989)
LIBKML driver:
* make edition of existing file work (https://issues.qgis.org/issues/18631)
* implement OGRLIBKMLLayer::SyncToDisk() to fix https://issues.qgis.org/issues/18631)
* workaround weird issue with OSGeo4W and newline characters in <coordinate> element (https://issues.qgis.org/issues/19215)
MSSQLSpatial driver:
* Fix geometry parser with M values (#1051)
MVT driver:
* disable check on 'extent' field in identifiation method, which rejected tiles with extent > 16384
OpenFileGDB driver:
* fix potential crash on corrupted datasets. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=11313.
Shape driver:
* avoid being dependent on correctness of file size field in .shp. Fixes https://lists.osgeo.org/pipermail/gdal-dev/2018-October/049218.html
SQLite driver:
* do not run spatial index creation in rollback code
XLSX / ODS drivers:
* avoid harmless warning in some cases when guessing column data types
== Python bindings ==
* avoid crash in ReadRaster() under low memory condition (#1026)
= GDAL/OGR 2.3.2 Release Notes =
The 2.3.2 release is a bug fix release.
== Build ==
 
Unix:
* Remove additionnal '$' in front of '${CXX}' in configure to fix ECW5 detection
* Set minimum pkg-config version to 0.21
 
Windows:
== Port ==
 
* ODBC: Fetch wide-char strings on UNIX (#839)
......@@ -91,10 +209,6 @@ VRT driver:
WMTS driver:
* avoid issue with reprojection of layer extent into TileMatrixSet SRS
 
== OGR core ==
*
== OGRSpatialReference ==
 
* importFromProj4/exportToProj4: fix typo in the PROJ method name of InternalMapOfTheWorldPolyconic which is imw_p (instead of the misspelled iwm_p)
......@@ -158,12 +272,6 @@ WFS driver:
Java bindings:
* Unix: fix JNI library bundling
 
Perl bindings:
*
Python bindings:
*
= GDAL/OGR 2.3.1 Release Notes =
 
The 2.3.1 release is a bug fix release.
......
......@@ -49,7 +49,7 @@
#include <ctype.h>
#include <math.h>
CPL_CVSID("$Id: delaunay.c 4053978373139ca4eaa4f15e2ae66477516ae4af 2018-06-28 22:56:21 +0200 Even Rouault $")
CPL_CVSID("$Id: delaunay.c 818830b37601c33fb53567f86949c8edc1157592 2018-10-06 19:02:19 +0200 Even Rouault $")
#if defined(INTERNAL_QHULL) || defined(EXTERNAL_QHULL)
#define HAVE_INTERNAL_OR_EXTERNAL_QHULL 1
......@@ -327,7 +327,7 @@ int GDALTriangulationComputeBarycentricCoefficients(GDALTriangulation* psDT,
double dfY3 = padfY[psFacet->anVertexIdx[2]];
/* See https://en.wikipedia.org/wiki/Barycentric_coordinate_system */
double dfDenom = (dfY2 - dfY3) * (dfX1 - dfX3) + (dfX3 - dfX2) * (dfY1 - dfY3);
if( dfDenom == 0.0 )
if( fabs(dfDenom) < 1e-5 )
{
// Degenerate triangle
psCoeffs->dfMul1X = 0.0;
......@@ -441,7 +441,8 @@ int GDALTriangulationFindFacetBruteForce(const GDALTriangulation* psDT,
double l1, l2, l3;
const GDALTriBarycentricCoefficients* psCoeffs =
&(psDT->pasFacetCoefficients[nFacetIdx]);
if( psCoeffs->dfMul1X == 0.0 )
if( psCoeffs->dfMul1X == 0.0 && psCoeffs->dfMul2X == 0.0 &&
psCoeffs->dfMul1Y == 0.0 && psCoeffs->dfMul2Y == 0.0 )
{
// Degenerate triangle
continue;
......@@ -541,7 +542,8 @@ int GDALTriangulationFindFacetDirected(const GDALTriangulation* psDT,
const GDALTriFacet* psFacet = &(psDT->pasFacets[nFacetIdx]);
const GDALTriBarycentricCoefficients* psCoeffs =
&(psDT->pasFacetCoefficients[nFacetIdx]);
if( psCoeffs->dfMul1X == 0.0 )
if( psCoeffs->dfMul1X == 0.0 && psCoeffs->dfMul2X == 0.0 &&
psCoeffs->dfMul1Y == 0.0 && psCoeffs->dfMul2Y == 0.0 )
{
// Degenerate triangle
break;
......
......@@ -54,7 +54,7 @@
#include "ogr_srs_api.h"
#include "ogrsf_frmts.h"
CPL_CVSID("$Id: gdal_grid_lib.cpp 7d078e0357d2998edfa713422e607cbadf77f9ff 2018-04-08 22:11:28 +0200 Even Rouault $")
CPL_CVSID("$Id: gdal_grid_lib.cpp 59e6a908f2fc92acde477446d99e8d694025e35a 2018-12-07 11:58:04 +0100 Even Rouault $")
/************************************************************************/
/* GDALGridOptions */
......@@ -625,7 +625,8 @@ static OGRGeometryCollection* LoadGeometry( const char* pszDS,
const char* pszLyr,
const char* pszWhere )
{
GDALDataset *poDS = static_cast<GDALDataset*>(GDALOpen(pszDS, GA_ReadOnly));
GDALDataset *poDS = static_cast<GDALDataset*>(
GDALOpenEx(pszDS, GDAL_OF_VECTOR, nullptr, nullptr, nullptr));
if ( poDS == nullptr )
return nullptr;
......
#ifndef DOXYGEN_SKIP
/* $Id: gdal_utilities.dox 27dcde5e2f5ea66eec45b077a27e0de6f20eb402 2018-05-02 19:12:22 +0200 Even Rouault $ */
/* $Id: gdal_utilities.dox 8c90a5569ea2cf01d1bd9f92e4231b8807c44580 2018-09-22 14:42:09 +0200 Even Rouault $ */
#endif /* DOXYGEN_SKIP */
/*!
......@@ -176,7 +176,7 @@ and exit.
\htmlonly
<p>
$Id: gdal_utilities.dox 27dcde5e2f5ea66eec45b077a27e0de6f20eb402 2018-05-02 19:12:22 +0200 Even Rouault $
$Id: gdal_utilities.dox 8c90a5569ea2cf01d1bd9f92e4231b8807c44580 2018-09-22 14:42:09 +0200 Even Rouault $
</p>
\endhtmlonly
*/
......@@ -1667,6 +1667,7 @@ Generates directory with TMS tiles, KMLs and simple web viewers.
gdal2tiles.py [-p profile] [-r resampling] [-s srs] [-z zoom]
[-e] [-a nodata] [-v] [-q] [-h] [-k] [-n] [-u url]
[-w webviewer] [-t title] [-c copyright]
[--processes=NB_PROCESSES]
[-g googlekey] [-b bingkey] input_file [output_dir]
\endverbatim
......@@ -1702,6 +1703,8 @@ can publish a picture without proper georeferencing too.
<dd>Generate verbose output of tile generation.</dd>
<dt> <b>-q, --quiet</b></dt>
<dd>Disable messages and status to stdout (GDAL &gt;= 2.1).</dd>
<dt> <b>--processes=</b><i>NB_PROCESSES</i></dt>
<dd>Number of processes to use for tiling (GDAL &gt;= 2.3).</dd>
<dt> <b>-h, --help</b></dt>
<dd>Show help message and exit.</dd>
<dt> <b>\-\-version</b></dt>
......
......@@ -59,7 +59,7 @@
#include "ogr_srs_api.h"
#include "vrtdataset.h"
CPL_CVSID("$Id: gdalwarp_lib.cpp bf6dc2add0064d9c76bbdd9a319641747c5311e3 2018-04-26 20:17:00 +0200 Even Rouault $")
CPL_CVSID("$Id: gdalwarp_lib.cpp 2aa952a9cabf062c92db8713976cd41385306b65 2018-09-22 15:57:07 +0200 Even Rouault $")
/************************************************************************/
/* GDALWarpAppOptions */
......@@ -1449,6 +1449,24 @@ GDALDatasetH GDALWarp( const char *pszDest, GDALDatasetH hDstDS, int nSrcCount,
else
psWO->nBandCount = GDALGetRasterCount(hWrkSrcDS);
const int nNeededDstBands =
psWO->nBandCount + ( bEnableDstAlpha ? 1 : 0 );
if( nNeededDstBands > GDALGetRasterCount(hDstDS) )
{
CPLError(CE_Failure, CPLE_AppDefined,
"Destination dataset has %d bands, but at least %d "
"are needed",
GDALGetRasterCount(hDstDS),
nNeededDstBands);
GDALDestroyTransformer( hTransformArg );
GDALDestroyWarpOptions( psWO );
GDALWarpAppOptionsFree(psOptions);
OGR_G_DestroyGeometry( hCutline );
GDALReleaseDataset(hWrkSrcDS);
GDALReleaseDataset(hDstDS);
return nullptr;
}
psWO->panSrcBands =
static_cast<int *>(CPLMalloc(psWO->nBandCount*sizeof(int)));
psWO->panDstBands =
......
......@@ -664,6 +664,7 @@ 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
......@@ -34386,6 +34387,7 @@ 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
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for poppler" >&5
$as_echo_n "checking for poppler... " >&6; }
......@@ -34428,6 +34430,32 @@ $as_echo "yes" >&6; }
 
CHECK_OTHER_POPPLER_VERSION=yes
 
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 <poppler/OptionalContent.h>' > 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
$as_echo "no" >&6; }
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; }
......@@ -34447,6 +34475,7 @@ $as_echo "yes" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
fi
 
if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
 
......@@ -34550,6 +34579,8 @@ 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_PLUGIN_LIB=$POPPLER_PLUGIN_LIB
......@@ -4446,6 +4446,7 @@ 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
AC_MSG_CHECKING([for poppler])
......@@ -4486,6 +4487,29 @@ if test "$with_poppler" != "no" -a "$with_poppler" != ""; then
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 <poppler/OptionalContent.h>' > 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.*
......@@ -4502,6 +4526,7 @@ if test "$with_poppler" != "no" -a "$with_poppler" != ""; then
else
AC_MSG_RESULT([no])
fi
fi
if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
......@@ -4585,6 +4610,7 @@ 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)
......
gdal (2.3.3+dfsg-1) unstable; urgency=medium
* New upstream release.
* Update watch file for final releases.
* Update symbols for 2.3.3.
* Move from experimental to unstable.
-- Bas Couwenberg <sebastic@debian.org> Thu, 20 Dec 2018 13:42:28 +0100
gdal (2.3.3~rc2+dfsg-1~exp1) experimental; urgency=medium
* New upstream release candidate.
-- Bas Couwenberg <sebastic@debian.org> Fri, 14 Dec 2018 17:07:19 +0100
gdal (2.3.3~rc1+dfsg-1~exp1) experimental; urgency=medium
* New upstream release candidate.
* Update watch file for 2.3.3 pre-releases.
* Drop Poppler patches, included upstream. Refresh remaining patches.
-- Bas Couwenberg <sebastic@debian.org> Fri, 14 Dec 2018 15:39:12 +0100
gdal (2.3.2+dfsg-4) unstable; urgency=medium
* Add upstream patch for Poppler 0.71.0 support.
......
......@@ -3868,6 +3868,7 @@ libgdal.so.20 libgdal20 #MINVER#
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_assign_aux<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_range_insert<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<unsigned long long, unsigned long>, std::allocator<std::pair<unsigned long long, unsigned long> > >::_M_realloc_insert<std::pair<unsigned long long, unsigned long> >(__gnu_cxx::__normal_iterator<std::pair<unsigned long long, unsigned long>*, std::vector<std::pair<unsigned long long, unsigned long>, std::allocator<std::pair<unsigned long long, unsigned long> > > >, std::pair<unsigned long long, unsigned long>&&)@Base" 2.3.0 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::emplace_back<std::tuple<CPLString, CPLString> >(std::tuple<CPLString, CPLString>&&)@Base" 2.3.3 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::_M_realloc_insert<std::tuple<CPLString, CPLString> >(__gnu_cxx::__normal_iterator<std::tuple<CPLString, CPLString>*, std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > > >, std::tuple<CPLString, CPLString>&&)@Base" 2.3.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned long, bool)@Base" 1.9.0 1
......
......@@ -3868,6 +3868,7 @@ libgdal.so.20 libgdal20 #MINVER#
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_assign_aux<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_range_insert<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<unsigned long long, unsigned long>, std::allocator<std::pair<unsigned long long, unsigned long> > >::_M_realloc_insert<std::pair<unsigned long long, unsigned long> >(__gnu_cxx::__normal_iterator<std::pair<unsigned long long, unsigned long>*, std::vector<std::pair<unsigned long long, unsigned long>, std::allocator<std::pair<unsigned long long, unsigned long> > > >, std::pair<unsigned long long, unsigned long>&&)@Base" 2.3.0 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::emplace_back<std::tuple<CPLString, CPLString> >(std::tuple<CPLString, CPLString>&&)@Base" 2.3.3 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::_M_realloc_insert<std::tuple<CPLString, CPLString> >(__gnu_cxx::__normal_iterator<std::tuple<CPLString, CPLString>*, std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > > >, std::tuple<CPLString, CPLString>&&)@Base" 2.3.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned long, bool)@Base" 1.10.1 1
......
......@@ -3866,6 +3866,7 @@ libgdal.so.20 libgdal20 #MINVER#
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_range_insert<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_realloc_insert<std::pair<long long, long long> >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::pair<long long, long long>&&)@Base" 2.2.2 1
(c++)"void std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > >::_M_realloc_insert<std::pair<unsigned long long, unsigned int> >(__gnu_cxx::__normal_iterator<std::pair<unsigned long long, unsigned int>*, std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > > >, std::pair<unsigned long long, unsigned int>&&)@Base" 2.3.0 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::emplace_back<std::tuple<CPLString, CPLString> >(std::tuple<CPLString, CPLString>&&)@Base" 2.3.3 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::_M_realloc_insert<std::tuple<CPLString, CPLString> >(__gnu_cxx::__normal_iterator<std::tuple<CPLString, CPLString>*, std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > > >, std::tuple<CPLString, CPLString>&&)@Base" 2.3.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned int, bool)@Base" 1.9.0 1
......
......@@ -3864,6 +3864,7 @@ libgdal.so.20 libgdal20 #MINVER#
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_range_insert<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_realloc_insert<std::pair<long long, long long> >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::pair<long long, long long>&&)@Base" 2.2.2 1
(c++)"void std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > >::_M_realloc_insert<std::pair<unsigned long long, unsigned int> >(__gnu_cxx::__normal_iterator<std::pair<unsigned long long, unsigned int>*, std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > > >, std::pair<unsigned long long, unsigned int>&&)@Base" 2.3.0 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::emplace_back<std::tuple<CPLString, CPLString> >(std::tuple<CPLString, CPLString>&&)@Base" 2.3.3 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::_M_realloc_insert<std::tuple<CPLString, CPLString> >(__gnu_cxx::__normal_iterator<std::tuple<CPLString, CPLString>*, std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > > >, std::tuple<CPLString, CPLString>&&)@Base" 2.3.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned int, bool)@Base" 1.9.0 1
......
......@@ -3863,6 +3863,7 @@ libgdal.so.20 libgdal20 #MINVER#
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_range_insert<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_realloc_insert<std::pair<long long, long long> >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::pair<long long, long long>&&)@Base" 2.2.2 1
(c++)"void std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > >::_M_realloc_insert<std::pair<unsigned long long, unsigned int> >(__gnu_cxx::__normal_iterator<std::pair<unsigned long long, unsigned int>*, std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > > >, std::pair<unsigned long long, unsigned int>&&)@Base" 2.3.0 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::emplace_back<std::tuple<CPLString, CPLString> >(std::tuple<CPLString, CPLString>&&)@Base" 2.3.3 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::_M_realloc_insert<std::tuple<CPLString, CPLString> >(__gnu_cxx::__normal_iterator<std::tuple<CPLString, CPLString>*, std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > > >, std::tuple<CPLString, CPLString>&&)@Base" 2.3.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned int, bool)@Base" 1.9.0 1
......
......@@ -3868,6 +3868,7 @@ libgdal.so.20 libgdal20 #MINVER#
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_assign_aux<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_range_insert<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<unsigned long long, unsigned long>, std::allocator<std::pair<unsigned long long, unsigned long> > >::_M_realloc_insert<std::pair<unsigned long long, unsigned long> >(__gnu_cxx::__normal_iterator<std::pair<unsigned long long, unsigned long>*, std::vector<std::pair<unsigned long long, unsigned long>, std::allocator<std::pair<unsigned long long, unsigned long> > > >, std::pair<unsigned long long, unsigned long>&&)@Base" 2.3.2 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::emplace_back<std::tuple<CPLString, CPLString> >(std::tuple<CPLString, CPLString>&&)@Base" 2.3.3 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::_M_realloc_insert<std::tuple<CPLString, CPLString> >(__gnu_cxx::__normal_iterator<std::tuple<CPLString, CPLString>*, std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > > >, std::tuple<CPLString, CPLString>&&)@Base" 2.3.2 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned long, bool)@Base" 1.10.0 1
......
......@@ -3863,6 +3863,7 @@ libgdal.so.20 libgdal20 #MINVER#
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_range_insert<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_realloc_insert<std::pair<long long, long long> >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::pair<long long, long long>&&)@Base" 2.2.2 1
(c++)"void std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > >::_M_realloc_insert<std::pair<unsigned long long, unsigned int> >(__gnu_cxx::__normal_iterator<std::pair<unsigned long long, unsigned int>*, std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > > >, std::pair<unsigned long long, unsigned int>&&)@Base" 2.3.2 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::emplace_back<std::tuple<CPLString, CPLString> >(std::tuple<CPLString, CPLString>&&)@Base" 2.3.3 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::_M_realloc_insert<std::tuple<CPLString, CPLString> >(__gnu_cxx::__normal_iterator<std::tuple<CPLString, CPLString>*, std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > > >, std::tuple<CPLString, CPLString>&&)@Base" 2.3.2 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned int, bool)@Base" 1.10.0 1
......
......@@ -3866,6 +3866,7 @@ libgdal.so.20 libgdal20 #MINVER#
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_range_insert<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_realloc_insert<std::pair<long long, long long> >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::pair<long long, long long>&&)@Base" 2.2.2 1
(c++)"void std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > >::_M_realloc_insert<std::pair<unsigned long long, unsigned int> >(__gnu_cxx::__normal_iterator<std::pair<unsigned long long, unsigned int>*, std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > > >, std::pair<unsigned long long, unsigned int>&&)@Base" 2.3.0 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::emplace_back<std::tuple<CPLString, CPLString> >(std::tuple<CPLString, CPLString>&&)@Base" 2.3.3 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::_M_realloc_insert<std::tuple<CPLString, CPLString> >(__gnu_cxx::__normal_iterator<std::tuple<CPLString, CPLString>*, std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > > >, std::tuple<CPLString, CPLString>&&)@Base" 2.3.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned int, bool)@Base" 1.9.0 1
......
......@@ -3866,6 +3866,7 @@ libgdal.so.20 libgdal20 #MINVER#
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_range_insert<__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > > >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, __gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::forward_iterator_tag)@Base" 2.2.0 1
(c++)"void std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > >::_M_realloc_insert<std::pair<long long, long long> >(__gnu_cxx::__normal_iterator<std::pair<long long, long long>*, std::vector<std::pair<long long, long long>, std::allocator<std::pair<long long, long long> > > >, std::pair<long long, long long>&&)@Base" 2.2.2 1
(c++)"void std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > >::_M_realloc_insert<std::pair<unsigned long long, unsigned int> >(__gnu_cxx::__normal_iterator<std::pair<unsigned long long, unsigned int>*, std::vector<std::pair<unsigned long long, unsigned int>, std::allocator<std::pair<unsigned long long, unsigned int> > > >, std::pair<unsigned long long, unsigned int>&&)@Base" 2.3.0 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::emplace_back<std::tuple<CPLString, CPLString> >(std::tuple<CPLString, CPLString>&&)@Base" 2.3.3 1
(c++)"void std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > >::_M_realloc_insert<std::tuple<CPLString, CPLString> >(__gnu_cxx::__normal_iterator<std::tuple<CPLString, CPLString>*, std::vector<std::tuple<CPLString, CPLString>, std::allocator<std::tuple<CPLString, CPLString> > > >, std::tuple<CPLString, CPLString>&&)@Base" 2.3.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_insert_aux(std::_Bit_iterator, bool)@Base" 2.1.0 1
(c++)"std::vector<bool, std::allocator<bool> >::_M_fill_insert(std::_Bit_iterator, unsigned int, bool)@Base" 1.9.0 1
......