diff --git a/apps/gdalmdiminfo_lib.cpp b/apps/gdalmdiminfo_lib.cpp index c6d1372164ca..0502cc4d090f 100644 --- a/apps/gdalmdiminfo_lib.cpp +++ b/apps/gdalmdiminfo_lib.cpp @@ -1222,7 +1222,7 @@ char *GDALMultiDimInfo(GDALDatasetH hDataset, } curGroup = std::move(curGroupNew); } - const char *pszArrayName = aosTokens[aosTokens.size() - 1]; + const char *pszArrayName = aosTokens.back(); auto array(curGroup->OpenMDArray(pszArrayName)); if (!array) { diff --git a/apps/ogr2ogr_lib.cpp b/apps/ogr2ogr_lib.cpp index e42155fdfa49..16b3539ddd42 100644 --- a/apps/ogr2ogr_lib.cpp +++ b/apps/ogr2ogr_lib.cpp @@ -1455,7 +1455,7 @@ static int GetFieldType(const char *pszArg, int *pnSubFieldType) *pnSubFieldType = -1; CPLString osArgSubType = pszOpenParenthesis + 1; if (!osArgSubType.empty() && osArgSubType.back() == ')') - osArgSubType.resize(osArgSubType.size() - 1); + osArgSubType.pop_back(); for (int iSubType = 0; iSubType <= static_cast(OFSTMaxSubType); iSubType++) { @@ -6880,7 +6880,7 @@ static std::unique_ptr GDALVectorTranslateOptionsGetParser( osGeomName.c_str() + osGeomName.size() - 1, "Z")) { bIs3D = true; - osGeomName.resize(osGeomName.size() - 1); + osGeomName.pop_back(); } if (EQUAL(osGeomName.c_str(), "NONE")) { diff --git a/apps/ogrdissolve.cpp b/apps/ogrdissolve.cpp index f92ced90fae5..cf79c595b60c 100644 --- a/apps/ogrdissolve.cpp +++ b/apps/ogrdissolve.cpp @@ -163,7 +163,7 @@ MAIN_START(nArgc, papszArgv) "Z")) { bIs3D = TRUE; - osGeomName.resize(osGeomName.size() - 1); + osGeomName.pop_back(); } if (EQUAL(osGeomName, "NONE")) eGType = wkbNone; diff --git a/frmts/georaster/georaster_rasterband.cpp b/frmts/georaster/georaster_rasterband.cpp index 907760453be9..cb0eb8a79648 100644 --- a/frmts/georaster/georaster_rasterband.cpp +++ b/frmts/georaster/georaster_rasterband.cpp @@ -851,7 +851,7 @@ GDALRasterAttributeTable *GeoRasterRasterBand::GetDefaultRAT() } if (!osColumnList.empty()) - osColumnList.resize(osColumnList.size() - 1); // remove the last comma + osColumnList.pop_back(); // remove the last comma // ---------------------------------------------------------- // Read VAT and load RAT diff --git a/frmts/grib/gribcreatecopy.cpp b/frmts/grib/gribcreatecopy.cpp index 8a0140ff030a..6a886d410656 100644 --- a/frmts/grib/gribcreatecopy.cpp +++ b/frmts/grib/gribcreatecopy.cpp @@ -2250,7 +2250,7 @@ static void WriteAssembledPDS(VSILFILE *fp, const gtemplate *mappds, else if (nEltSize == 4) { GIntBig nBigVal = CPLAtoGIntBig(papszTokens[i]); - anVals[anVals.size() - 1] = static_cast(nBigVal); + anVals.back() = static_cast(nBigVal); if (nBigVal < 0 || nBigVal > static_cast(UINT_MAX)) { CPLError(CE_Warning, CPLE_AppDefined, diff --git a/frmts/l1b/l1bdataset.cpp b/frmts/l1b/l1bdataset.cpp index 1c256eaad9cc..dcb5e8364aa9 100644 --- a/frmts/l1b/l1bdataset.cpp +++ b/frmts/l1b/l1bdataset.cpp @@ -3310,7 +3310,7 @@ GDALDataset *L1BDataset::Open(GDALOpenInfo *poOpenInfo) pszFilename++; osFilename = pszFilename; if (!osFilename.empty() && osFilename.back() == '"') - osFilename.resize(osFilename.size() - 1); + osFilename.pop_back(); fp = VSIFOpenL(osFilename, "rb"); if (!fp) { diff --git a/frmts/mrf/marfa_dataset.cpp b/frmts/mrf/marfa_dataset.cpp index 3f96a07f5d31..6af454ae1702 100644 --- a/frmts/mrf/marfa_dataset.cpp +++ b/frmts/mrf/marfa_dataset.cpp @@ -1389,7 +1389,7 @@ CPLXMLNode *MRFDataset::BuildConfig() options += optlist[i]; options += ' '; } - options.resize(options.size() - 1); + options.pop_back(); CPLCreateXMLElementAndValue(config, "Options", options); } diff --git a/frmts/mrf/mrf_util.cpp b/frmts/mrf/mrf_util.cpp index 8601505680ac..40fc2aebe3d2 100644 --- a/frmts/mrf/mrf_util.cpp +++ b/frmts/mrf/mrf_util.cpp @@ -537,7 +537,7 @@ void XMLSetAttributeVal(CPLXMLNode *parent, const char *pszName, single_val = false; value.append(PrintDouble(values[i]) + " "); } - value.resize(value.size() - 1); // Cut the last space + value.pop_back(); // Cut the last space if (single_val) value = PrintDouble(values[0]); CPLCreateXMLNode(parent, CXT_Attribute, pszName); diff --git a/frmts/netcdf/netcdfdataset.cpp b/frmts/netcdf/netcdfdataset.cpp index e2dcce35dc6e..e470a6ca724a 100644 --- a/frmts/netcdf/netcdfdataset.cpp +++ b/frmts/netcdf/netcdfdataset.cpp @@ -6451,7 +6451,7 @@ void netCDFDataset::CreateSubDatasetList(int nGroupId) nc_type nVarType; nc_inq_vartype(nGroupId, nVar, &nVarType); // Get rid of the last "x" character. - osDim.resize(osDim.size() - 1); + osDim.pop_back(); const char *pszType = ""; switch (nVarType) { @@ -7649,11 +7649,11 @@ bool netCDFDatasetCreateTempFile(NetCDFFormatEnum eFormat, { if (osVal.back() == ';' || osVal.back() == ' ') { - osVal.resize(osVal.size() - 1); + osVal.pop_back(); } else if (osVal.back() == '"') { - osVal.resize(osVal.size() - 1); + osVal.pop_back(); break; } else @@ -7672,7 +7672,7 @@ bool netCDFDatasetCreateTempFile(NetCDFFormatEnum eFormat, { if (osVal.back() == ';' || osVal.back() == ' ') { - osVal.resize(osVal.size() - 1); + osVal.pop_back(); } else { @@ -7683,12 +7683,12 @@ bool netCDFDatasetCreateTempFile(NetCDFFormatEnum eFormat, if (!osVal.empty() && osVal.back() == 'b') { nc_datatype = NC_BYTE; - osVal.resize(osVal.size() - 1); + osVal.pop_back(); } else if (!osVal.empty() && osVal.back() == 's') { nc_datatype = NC_SHORT; - osVal.resize(osVal.size() - 1); + osVal.pop_back(); } if (CPLGetValueType(osVal) == CPL_VALUE_INTEGER) { @@ -7782,7 +7782,7 @@ bool netCDFDatasetCreateTempFile(NetCDFFormatEnum eFormat, } if (pszLine == nullptr) break; - osAccVal.resize(osAccVal.size() - 1); + osAccVal.pop_back(); const std::vector aoDimIds = oMapVarIdToVectorOfDimId[nVarId]; diff --git a/frmts/nitf/nitfdataset.cpp b/frmts/nitf/nitfdataset.cpp index c5835ef47244..c030a1ba82c2 100644 --- a/frmts/nitf/nitfdataset.cpp +++ b/frmts/nitf/nitfdataset.cpp @@ -3366,7 +3366,7 @@ int NITFDataset::CheckForRSets(const char *pszNITFFilename, if (isR0File) { osTarget = pszNITFFilename; - osTarget[osTarget.size() - 1] = static_cast('0' + i); + osTarget.back() = static_cast('0' + i); } else osTarget.Printf("%s.r%d", pszNITFFilename, i); diff --git a/frmts/plmosaic/plmosaicdataset.cpp b/frmts/plmosaic/plmosaicdataset.cpp index fe38f0fc793a..a8632e275d1a 100644 --- a/frmts/plmosaic/plmosaicdataset.cpp +++ b/frmts/plmosaic/plmosaicdataset.cpp @@ -450,7 +450,7 @@ CPLHTTPResult *PLMosaicDataset::Download(const char *pszURL, int bQuiet404Error) vsi_l_offset nDataLength = 0; CPLString osURL(pszURL); if (osURL.back() == '/') - osURL.resize(osURL.size() - 1); + osURL.pop_back(); GByte *pabyBuf = VSIGetMemFileBuffer(osURL, &nDataLength, FALSE); if (pabyBuf) { diff --git a/frmts/stacit/stacitdataset.cpp b/frmts/stacit/stacitdataset.cpp index e0bbab81771f..043ba7845d9a 100644 --- a/frmts/stacit/stacitdataset.cpp +++ b/frmts/stacit/stacitdataset.cpp @@ -178,7 +178,7 @@ static std::string SanitizeCRSValue(const std::string &v) } } if (!ret.empty() && ret.back() == '_') - ret.resize(ret.size() - 1); + ret.pop_back(); return ret; } diff --git a/frmts/tga/tgadataset.cpp b/frmts/tga/tgadataset.cpp index cda777088682..d8b4c1b2e9f8 100644 --- a/frmts/tga/tgadataset.cpp +++ b/frmts/tga/tgadataset.cpp @@ -622,7 +622,7 @@ GDALDataset *GDALTGADataset::Open(GDALOpenInfo *poOpenInfo) while (!osAuthorName.empty() && osAuthorName.back() == ' ') { - osAuthorName.resize(osAuthorName.size() - 1); + osAuthorName.pop_back(); } poDS->GDALDataset::SetMetadataItem( "AUTHOR_NAME", osAuthorName.c_str()); @@ -645,7 +645,7 @@ GDALDataset *GDALTGADataset::Open(GDALOpenInfo *poOpenInfo) osLine.resize(strlen(osLine.c_str())); while (!osLine.empty() && osLine.back() == ' ') { - osLine.resize(osLine.size() - 1); + osLine.pop_back(); } if (i > 0) osComments += '\n'; diff --git a/frmts/vrt/vrtdataset.cpp b/frmts/vrt/vrtdataset.cpp index afa44b9b6eb9..5f9c37c333b1 100644 --- a/frmts/vrt/vrtdataset.cpp +++ b/frmts/vrt/vrtdataset.cpp @@ -303,7 +303,7 @@ CPLXMLNode *VRTDataset::SerializeToXML(const char *pszVRTPathIn) if (osCoordinateEpoch.find('.') != std::string::npos) { while (osCoordinateEpoch.back() == '0') - osCoordinateEpoch.resize(osCoordinateEpoch.size() - 1); + osCoordinateEpoch.pop_back(); } CPLAddXMLAttributeAndValue(psSRSNode, "coordinateEpoch", osCoordinateEpoch.c_str()); @@ -2795,7 +2795,7 @@ bool VRTDataset::AddVirtualOverview(int nOvFactor, const char *pszResampling) GDALDatasetH hOverviewDS = GDALTranslate("", GDALDataset::ToHandle(this), psOptions, nullptr); m_bCanTakeRef = true; - m_apoOverviews.resize(m_apoOverviews.size() - 1); + m_apoOverviews.pop_back(); GDALTranslateOptionsFree(psOptions); if (hOverviewDS == nullptr) diff --git a/frmts/vrt/vrtderivedrasterband.cpp b/frmts/vrt/vrtderivedrasterband.cpp index 4db83d4bc31e..9850cb27d669 100644 --- a/frmts/vrt/vrtderivedrasterband.cpp +++ b/frmts/vrt/vrtderivedrasterband.cpp @@ -720,7 +720,7 @@ bool VRTDerivedRasterBand::InitializePython() CPLString osException = GetPyExceptionString(); if (!osException.empty() && osException.back() == '\n') { - osException.resize(osException.size() - 1); + osException.pop_back(); } if (osException.find("ModuleNotFoundError") == 0) { diff --git a/frmts/vrt/vrtmultidim.cpp b/frmts/vrt/vrtmultidim.cpp index 214485ba67b2..c100cb64a0a5 100644 --- a/frmts/vrt/vrtmultidim.cpp +++ b/frmts/vrt/vrtmultidim.cpp @@ -407,7 +407,7 @@ VRTGroup::GetDimensionFromFullName(const std::string &name, return nullptr; } } - auto poDim(curGroup->GetDimension(aosTokens[aosTokens.size() - 1])); + auto poDim(curGroup->GetDimension(aosTokens.back())); if (!poDim) { if (bEmitError) diff --git a/frmts/wms/minidriver_mrf.cpp b/frmts/wms/minidriver_mrf.cpp index 6200e9478f01..f66e4e4926ea 100644 --- a/frmts/wms/minidriver_mrf.cpp +++ b/frmts/wms/minidriver_mrf.cpp @@ -160,7 +160,7 @@ void *SectorCache::data(size_t address) // If this is the last sector, it could be a new sector with invalid data, // so we remove it Otherwise, the previous content is still good if (target == &store.back()) - store.resize(store.size() - 1); + store.pop_back(); // Signal invalid request return nullptr; } diff --git a/frmts/wms/wmsdriver.cpp b/frmts/wms/wmsdriver.cpp index a372989d9b6c..10ab8a53cef1 100644 --- a/frmts/wms/wmsdriver.cpp +++ b/frmts/wms/wmsdriver.cpp @@ -118,7 +118,7 @@ static CPLXMLNode *GDALWMSDatasetGetConfigFromURL(GDALOpenInfo *poOpenInfo) osBaseURL = CPLURLAddKVP(osBaseURL, "BBOXORDER", nullptr); if (!osBaseURL.empty() && osBaseURL.back() == '&') - osBaseURL.resize(osBaseURL.size() - 1); + osBaseURL.pop_back(); if (osVersion.empty()) osVersion = "1.1.1"; diff --git a/frmts/wmts/wmtsdataset.cpp b/frmts/wmts/wmtsdataset.cpp index d2245c9ca301..923a095686a0 100644 --- a/frmts/wmts/wmtsdataset.cpp +++ b/frmts/wmts/wmtsdataset.cpp @@ -604,7 +604,7 @@ CPLString WMTSDataset::FixCRSName(const char *pszCRS) while (osRet.size() && (osRet.back() == ' ' || osRet.back() == '\r' || osRet.back() == '\n')) { - osRet.resize(osRet.size() - 1); + osRet.pop_back(); } return osRet; } diff --git a/frmts/zarr/zarr_sharedresource.cpp b/frmts/zarr/zarr_sharedresource.cpp index b0daddf2b608..69f739d3b69e 100644 --- a/frmts/zarr/zarr_sharedresource.cpp +++ b/frmts/zarr/zarr_sharedresource.cpp @@ -44,7 +44,7 @@ ZarrSharedResource::ZarrSharedResource(const std::string &osRootDirectoryName, m_osRootDirectoryName = osRootDirectoryName; if (!m_osRootDirectoryName.empty() && m_osRootDirectoryName.back() == '/') { - m_osRootDirectoryName.resize(m_osRootDirectoryName.size() - 1); + m_osRootDirectoryName.pop_back(); } m_poPAM = std::make_shared( CPLFormFilename(m_osRootDirectoryName.c_str(), "pam", nullptr)); diff --git a/frmts/zarr/zarrdriver.cpp b/frmts/zarr/zarrdriver.cpp index 6d399f312e6d..0d2befa2acdf 100644 --- a/frmts/zarr/zarrdriver.cpp +++ b/frmts/zarr/zarrdriver.cpp @@ -58,7 +58,7 @@ GDALDataset *ZarrDataset::OpenMultidim(const char *pszFilename, { CPLString osFilename(pszFilename); if (osFilename.back() == '/') - osFilename.resize(osFilename.size() - 1); + osFilename.pop_back(); auto poSharedResource = ZarrSharedResource::Create(osFilename, bUpdateMode); poSharedResource->SetOpenOptions(papszOpenOptionsIn); diff --git a/ogr/ogr_srs_erm.cpp b/ogr/ogr_srs_erm.cpp index 27c09433142a..77b91dcf9637 100644 --- a/ogr/ogr_srs_erm.cpp +++ b/ogr/ogr_srs_erm.cpp @@ -120,7 +120,7 @@ OGRErr OGRSpatialReference::importFromERM(const char *pszProj, } // Remove trailing ] - osProjWKT.resize(osProjWKT.size() - 1); + osProjWKT.pop_back(); // Remove any UNIT auto nPos = osProjWKT.find(",UNIT"); diff --git a/ogr/ogr_wkb.cpp b/ogr/ogr_wkb.cpp index 0f98f0766971..6b96f39e0144 100644 --- a/ogr/ogr_wkb.cpp +++ b/ogr/ogr_wkb.cpp @@ -891,7 +891,7 @@ static bool OGRWKBIsClockwiseRing(const GByte *data, const uint32_t nPoints, { v = i; vX = x; - vY = y; + // vY = y; bUseFallback = false; } else if (x == vX) diff --git a/ogr/ogrfeature.cpp b/ogr/ogrfeature.cpp index 2304e8cbf516..77d2b364f768 100644 --- a/ogr/ogrfeature.cpp +++ b/ogr/ogrfeature.cpp @@ -7002,7 +7002,7 @@ void OGRFeature::FillUnsetWithDefault(int bNotNullableOnly, pszDefault[strlen(pszDefault) - 1] == '\'') { CPLString osDefault(pszDefault + 1); - osDefault.resize(osDefault.size() - 1); + osDefault.pop_back(); char *pszTmp = CPLUnescapeString(osDefault, nullptr, CPLES_SQL); SetField(i, pszTmp); CPLFree(pszTmp); diff --git a/ogr/ogrsf_frmts/avc/avc_e00read.cpp b/ogr/ogrsf_frmts/avc/avc_e00read.cpp index 255ac4ba05c6..6c2bc215eda6 100644 --- a/ogr/ogrsf_frmts/avc/avc_e00read.cpp +++ b/ogr/ogrsf_frmts/avc/avc_e00read.cpp @@ -1003,7 +1003,7 @@ static int _AVCE00ReadBuildSqueleton(AVCE00ReadPtr psInfo, char **papszCoverDir) } CPLString osCoverPathTruncated(psInfo->pszCoverPath); - osCoverPathTruncated.resize(osCoverPathTruncated.size() - 1); + osCoverPathTruncated.pop_back(); pszEXPPath = CPLStrdup( CPLSPrintf("EXP 0 %s%s.E00", szCWD, osCoverPathTruncated.c_str())); pcTmp = pszEXPPath; diff --git a/ogr/ogrsf_frmts/csv/ogrcsvlayer.cpp b/ogr/ogrsf_frmts/csv/ogrcsvlayer.cpp index 3e979ce2cbb4..cf8a7cd6b81d 100644 --- a/ogr/ogrsf_frmts/csv/ogrcsvlayer.cpp +++ b/ogr/ogrsf_frmts/csv/ogrcsvlayer.cpp @@ -119,7 +119,7 @@ bool OGRCSVLayer::Matches(const char *pszFieldName, char **papszPossibleNames) { // *pattern* CPLString oPattern(pszPattern + 1); - oPattern.resize(oPattern.size() - 1); + oPattern.pop_back(); if (CPLString(pszFieldName).ifind(oPattern) != std::string::npos) return true; diff --git a/ogr/ogrsf_frmts/dwg/ogrdwglayer.cpp b/ogr/ogrsf_frmts/dwg/ogrdwglayer.cpp index c79476e1b2d5..1a8ff3bfa579 100644 --- a/ogr/ogrsf_frmts/dwg/ogrdwglayer.cpp +++ b/ogr/ogrsf_frmts/dwg/ogrdwglayer.cpp @@ -423,7 +423,7 @@ OGRFeature *OGRDWGLayer::TranslateMTEXT(OdDbEntityPtr poEntity) CPLString osText = TextUnescape(poMTE->contents(), true); if (!osText.empty() && osText.back() == '\n') - osText.resize(osText.size() - 1); + osText.pop_back(); poFeature->SetField("Text", osText); @@ -543,7 +543,7 @@ OGRFeature *OGRDWGLayer::TranslateTEXT(OdDbEntityPtr poEntity) CPLString osText = TextUnescape(poText->textString(), false); if (!osText.empty() && osText.back() == '\n') - osText.resize(osText.size() - 1); + osText.pop_back(); poFeature->SetField("Text", osText); diff --git a/ogr/ogrsf_frmts/dxf/ogrdxf_leader.cpp b/ogr/ogrsf_frmts/dxf/ogrdxf_leader.cpp index 8cdb26f6e7dc..e640f1d7b42a 100644 --- a/ogr/ogrsf_frmts/dxf/ogrdxf_leader.cpp +++ b/ogr/ogrsf_frmts/dxf/ogrdxf_leader.cpp @@ -1412,7 +1412,7 @@ static void InterpolateSpline(OGRLineString *const poLine, adfParameters.push_back(dfParameter); } - const double dfTotalChordLength = adfParameters[adfParameters.size() - 1]; + const double dfTotalChordLength = adfParameters.back(); // Start tangent can be worked out from the first chord DXFTriple oStartTangent(aoDataPoints[1].dfX - aoDataPoints[0].dfX, diff --git a/ogr/ogrsf_frmts/dxf/ogrdxflayer.cpp b/ogr/ogrsf_frmts/dxf/ogrdxflayer.cpp index ba61e2a5b2ea..947144ee689f 100644 --- a/ogr/ogrsf_frmts/dxf/ogrdxflayer.cpp +++ b/ogr/ogrsf_frmts/dxf/ogrdxflayer.cpp @@ -554,7 +554,7 @@ OGRDXFFeature *OGRDXFLayer::TranslateMTEXT() /* Apply text after stripping off any extra terminating newline. */ /* -------------------------------------------------------------------- */ if (!osText.empty() && osText.back() == '\n') - osText.resize(osText.size() - 1); + osText.pop_back(); poFeature->SetField("Text", osText); diff --git a/ogr/ogrsf_frmts/filegdb/FGdbDriver.cpp b/ogr/ogrsf_frmts/filegdb/FGdbDriver.cpp index 3b2eafa548f9..aa8861ac42c4 100644 --- a/ogr/ogrsf_frmts/filegdb/FGdbDriver.cpp +++ b/ogr/ogrsf_frmts/filegdb/FGdbDriver.cpp @@ -294,7 +294,7 @@ OGRErr FGdbTransactionManager::StartTransaction(OGRDataSource *&poDSInOut, CPLString osName(poMutexedDS->GetName()); CPLString osNameOri(osName); if (osName.back() == '/' || osName.back() == '\\') - osName.resize(osName.size() - 1); + osName.pop_back(); #ifndef _WIN32 int bPerLayerCopyingForTransaction = @@ -452,7 +452,7 @@ OGRErr FGdbTransactionManager::CommitTransaction(OGRDataSource *&poDSInOut, CPLString osName(poMutexedDS->GetName()); CPLString osNameOri(osName); if (osName.back() == '/' || osName.back() == '\\') - osName.resize(osName.size() - 1); + osName.pop_back(); #ifndef _WIN32 int bPerLayerCopyingForTransaction = @@ -696,7 +696,7 @@ OGRErr FGdbTransactionManager::RollbackTransaction(OGRDataSource *&poDSInOut, CPLString osName(poMutexedDS->GetName()); CPLString osNameOri(osName); if (osName.back() == '/' || osName.back() == '\\') - osName.resize(osName.size() - 1); + osName.pop_back(); // int bPerLayerCopyingForTransaction = // poDS->HasPerLayerCopyingForTransaction(); diff --git a/ogr/ogrsf_frmts/filegdb/FGdbLayer.cpp b/ogr/ogrsf_frmts/filegdb/FGdbLayer.cpp index 81d3d6cc3bc9..44aab8480767 100644 --- a/ogr/ogrsf_frmts/filegdb/FGdbLayer.cpp +++ b/ogr/ogrsf_frmts/filegdb/FGdbLayer.cpp @@ -1837,7 +1837,7 @@ char *FGdbLayer::CreateFieldDefn(OGRFieldDefn &oField, int bApproxOK, if (osVal[0] == '\'' && osVal.back() == '\'') { osVal = osVal.substr(1); - osVal.resize(osVal.size() - 1); + osVal.pop_back(); char *pszTmp = CPLUnescapeString(osVal, nullptr, CPLES_SQL); osVal = pszTmp; CPLFree(pszTmp); diff --git a/ogr/ogrsf_frmts/flatgeobuf/ogrflatgeobuflayer.cpp b/ogr/ogrsf_frmts/flatgeobuf/ogrflatgeobuflayer.cpp index f964afb0be57..7319cc9f03ff 100644 --- a/ogr/ogrsf_frmts/flatgeobuf/ogrflatgeobuflayer.cpp +++ b/ogr/ogrsf_frmts/flatgeobuf/ogrflatgeobuflayer.cpp @@ -455,7 +455,7 @@ void OGRFlatGeobufLayer::writeHeader(VSILFILE *poFp, uint64_t featuresCount, if (osCoordinateEpoch.find('.') != std::string::npos) { while (osCoordinateEpoch.back() == '0') - osCoordinateEpoch.resize(osCoordinateEpoch.size() - 1); + osCoordinateEpoch.pop_back(); } std::string osWKT("COORDINATEMETADATA["); diff --git a/ogr/ogrsf_frmts/geojson/ogrgeojsonseqdriver.cpp b/ogr/ogrsf_frmts/geojson/ogrgeojsonseqdriver.cpp index d9197cd0c14b..0ac1eb612e30 100644 --- a/ogr/ogrsf_frmts/geojson/ogrgeojsonseqdriver.cpp +++ b/ogr/ogrsf_frmts/geojson/ogrgeojsonseqdriver.cpp @@ -575,7 +575,7 @@ json_object *OGRGeoJSONSeqLayer::GetNextObject(bool bLooseIdentification) (m_osFeatureBuffer.back() == '\r' || m_osFeatureBuffer.back() == '\n')) { - m_osFeatureBuffer.resize(m_osFeatureBuffer.size() - 1); + m_osFeatureBuffer.pop_back(); } if (!m_osFeatureBuffer.empty()) { diff --git a/ogr/ogrsf_frmts/gmlas/ogrgmlasutils.cpp b/ogr/ogrsf_frmts/gmlas/ogrgmlasutils.cpp index 67a106a624a2..368c6d32b556 100644 --- a/ogr/ogrsf_frmts/gmlas/ogrgmlasutils.cpp +++ b/ogr/ogrsf_frmts/gmlas/ogrgmlasutils.cpp @@ -111,7 +111,7 @@ CPLString OGRGMLASTruncateIdentifier(const CPLString &osName, { if (nLastTokenSize > nExtra) { - aosTokens[aosTokens.size() - 1].resize(nLastTokenSize - nExtra); + aosTokens.back().resize(nLastTokenSize - nExtra); nExtra = 0; } } @@ -127,7 +127,7 @@ CPLString OGRGMLASTruncateIdentifier(const CPLString &osName, // than previous ones. if (nLastTokenSize > 2 * iter->first) { - aosTokens[aosTokens.size() - 1].resize(nLastTokenSize - 1); + aosTokens.back().resize(nLastTokenSize - 1); nLastTokenSize--; bHasDoneSomething = true; nExtra--; diff --git a/ogr/ogrsf_frmts/gmlas/ogrgmlaswriter.cpp b/ogr/ogrsf_frmts/gmlas/ogrgmlaswriter.cpp index 9ee11cf89027..9b3c8a467061 100644 --- a/ogr/ogrsf_frmts/gmlas/ogrgmlaswriter.cpp +++ b/ogr/ogrsf_frmts/gmlas/ogrgmlaswriter.cpp @@ -1720,7 +1720,7 @@ bool GMLASWriter::WriteFieldRegular( // For extension/* case if (!aoFieldComponents.empty() && aoFieldComponents.back().second == "*") { - aoFieldComponents.resize(aoFieldComponents.size() - 1); + aoFieldComponents.pop_back(); } const size_t nCommonLength = @@ -2405,7 +2405,7 @@ bool GMLASWriter::WriteFieldNoLink( */ aoNewInitialContext = std::move(aoFieldComponents); - aoNewInitialContext.resize(aoNewInitialContext.size() - 1); + aoNewInitialContext.pop_back(); } else { @@ -2585,7 +2585,7 @@ bool GMLASWriter::WriteFieldWithLink( oSetLayersInIterationSub.insert(oChildLayerDesc.osName); XPathComponents aoPrefixComponentsNew(aoFieldComponents); - aoPrefixComponentsNew.resize(aoPrefixComponentsNew.size() - 1); + aoPrefixComponentsNew.pop_back(); if (aoLayerComponents.empty()) { @@ -2603,7 +2603,7 @@ bool GMLASWriter::WriteFieldWithLink( { aoInitialComponents = std::move(aoFieldComponents); if (!aoInitialComponents.empty()) - aoInitialComponents.resize(aoInitialComponents.size() - 1); + aoInitialComponents.pop_back(); WriteClosingAndStartingTags(aoCurComponents, aoInitialComponents, bCurIsRegularField); } @@ -2754,7 +2754,7 @@ bool GMLASWriter::WriteFieldJunctionTable( aoPrefixComponents.end()); if (!aoInitialComponents.empty()) - aoInitialComponents.resize(aoInitialComponents.size() - 1); + aoInitialComponents.pop_back(); WriteClosingAndStartingTags( aoCurComponents, aoInitialComponents, bCurIsRegularField); } diff --git a/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp b/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp index cd84680c4f94..61ee94970372 100644 --- a/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp +++ b/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp @@ -7521,7 +7521,7 @@ OGRLayer *GDALGeoPackageDataset::ExecuteSQL(const char *pszSQLCommand, CPLString osSQLCommand(pszSQLCommand); if (!osSQLCommand.empty() && osSQLCommand.back() == ';') - osSQLCommand.resize(osSQLCommand.size() - 1); + osSQLCommand.pop_back(); if (pszDialect == nullptr || !EQUAL(pszDialect, "DEBUG")) { diff --git a/ogr/ogrsf_frmts/hana/ogrhanadatasource.cpp b/ogr/ogrsf_frmts/hana/ogrhanadatasource.cpp index 30404c29eeae..9fcde55f1bad 100644 --- a/ogr/ogrsf_frmts/hana/ogrhanadatasource.cpp +++ b/ogr/ogrsf_frmts/hana/ogrhanadatasource.cpp @@ -1714,7 +1714,7 @@ OGRHanaDataSource::ICreateLayer(const char *layerNameIn, layers_.push_back(std::move(layer)); - return layers_[layers_.size() - 1].get(); + return layers_.back().get(); } /************************************************************************/ diff --git a/ogr/ogrsf_frmts/hana/ogrhanafeaturereader.cpp b/ogr/ogrsf_frmts/hana/ogrhanafeaturereader.cpp index 62c50efb1a06..0744e9f8ae60 100644 --- a/ogr/ogrsf_frmts/hana/ogrhanafeaturereader.cpp +++ b/ogr/ogrsf_frmts/hana/ogrhanafeaturereader.cpp @@ -196,7 +196,7 @@ odbc::String OGRHanaFeatureReader::GetFieldAsString(int fieldIndex, defaultValue[strlen(defaultValue) - 1] == '\'') { CPLString str(defaultValue + 1); - str.resize(str.size() - 1); + str.pop_back(); char *tmp = CPLUnescapeString(str, nullptr, CPLES_SQL); odbc::String ret = getString(tmp); CPLFree(tmp); @@ -256,7 +256,7 @@ odbc::String OGRHanaFeatureReader::GetFieldAsNString(int fieldIndex, defaultValue[strlen(defaultValue) - 1] == '\'') { CPLString str(defaultValue + 1); - str.resize(str.size() - 1); + str.pop_back(); char *tmp = CPLUnescapeString(str, nullptr, CPLES_SQL); odbc::String ret = getString(tmp); CPLFree(tmp); diff --git a/ogr/ogrsf_frmts/libkml/ogrlibkmlfield.cpp b/ogr/ogrsf_frmts/libkml/ogrlibkmlfield.cpp index 2fa024ac50ec..ad0161f1393e 100644 --- a/ogr/ogrsf_frmts/libkml/ogrlibkmlfield.cpp +++ b/ogr/ogrsf_frmts/libkml/ogrlibkmlfield.cpp @@ -1123,7 +1123,7 @@ static const char *TrimSpaces(CPLString &oText) // Trim trailing spaces. while (!oText.empty() && oText.back() == ' ') - oText.resize(oText.size() - 1); + oText.pop_back(); // Skip leading newline and spaces. const char *pszText = oText.c_str(); diff --git a/ogr/ogrsf_frmts/openfilegdb/filegdbtable_write_fields.cpp b/ogr/ogrsf_frmts/openfilegdb/filegdbtable_write_fields.cpp index d907f958a9bc..297e36dae95f 100644 --- a/ogr/ogrsf_frmts/openfilegdb/filegdbtable_write_fields.cpp +++ b/ogr/ogrsf_frmts/openfilegdb/filegdbtable_write_fields.cpp @@ -151,7 +151,7 @@ bool FileGDBTable::CreateField(std::unique_ptr &&psField) m_nNullableFieldsSizeInBytes = BIT_ARRAY_SIZE_IN_BYTES(m_nCountNullableFields); } - m_apoFields.resize(m_apoFields.size() - 1); + m_apoFields.pop_back(); m_bDirtyFieldDescriptors = true; return false; } diff --git a/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer_write.cpp b/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer_write.cpp index 727d4eda98c8..3ded4454e14d 100644 --- a/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer_write.cpp +++ b/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer_write.cpp @@ -1007,7 +1007,7 @@ static bool GetDefault(const OGRFieldDefn *poField, FileGDBFieldType eType, if (osDefaultVal[0] == '\'' && osDefaultVal.back() == '\'') { osDefaultVal = osDefaultVal.substr(1); - osDefaultVal.resize(osDefaultVal.size() - 1); + osDefaultVal.pop_back(); char *pszTmp = CPLUnescapeString(osDefaultVal.c_str(), nullptr, CPLES_SQL); osDefaultVal = pszTmp; @@ -1036,7 +1036,7 @@ static bool GetDefault(const OGRFieldDefn *poField, FileGDBFieldType eType, if (osDefaultVal[0] == '\'' && osDefaultVal.back() == '\'') { osDefaultVal = osDefaultVal.substr(1); - osDefaultVal.resize(osDefaultVal.size() - 1); + osDefaultVal.pop_back(); char *pszTmp = CPLUnescapeString(osDefaultVal.c_str(), nullptr, CPLES_SQL); osDefaultVal = pszTmp; diff --git a/ogr/ogrsf_frmts/parquet/ogrparquetdriver.cpp b/ogr/ogrsf_frmts/parquet/ogrparquetdriver.cpp index 096d7bb9abda..aea3b32f3994 100644 --- a/ogr/ogrsf_frmts/parquet/ogrparquetdriver.cpp +++ b/ogr/ogrsf_frmts/parquet/ogrparquetdriver.cpp @@ -344,7 +344,7 @@ static GDALDataset *OGRParquetDriverOpen(GDALOpenInfo *poOpenInfo) { VSIStatBufL sStat; if (!osBasePath.empty() && osBasePath.back() == '/') - osBasePath.resize(osBasePath.size() - 1); + osBasePath.pop_back(); std::string osMetadataPath = CPLFormFilename(osBasePath.c_str(), "_metadata", nullptr); if (CPLTestBool( diff --git a/ogr/ogrsf_frmts/pgdump/ogrpgdumplayer.cpp b/ogr/ogrsf_frmts/pgdump/ogrpgdumplayer.cpp index 31004e329672..a3fe8656361e 100644 --- a/ogr/ogrsf_frmts/pgdump/ogrpgdumplayer.cpp +++ b/ogr/ogrsf_frmts/pgdump/ogrpgdumplayer.cpp @@ -1550,7 +1550,7 @@ CPLString OGRPGCommonLayerGetPGDefault(OGRFieldDefn *poFieldDefn) if (sscanf(osRet, "'%d/%d/%d %d:%d:%f'", &nYear, &nMonth, &nDay, &nHour, &nMinute, &fSecond) == 6) { - osRet.resize(osRet.size() - 1); + osRet.pop_back(); osRet += "+00'::timestamp with time zone"; } return osRet; diff --git a/ogr/ogrsf_frmts/plscenes/ogrplscenesdatav1dataset.cpp b/ogr/ogrsf_frmts/plscenes/ogrplscenesdatav1dataset.cpp index 431177e7970c..78c0eb3f670c 100644 --- a/ogr/ogrsf_frmts/plscenes/ogrplscenesdatav1dataset.cpp +++ b/ogr/ogrsf_frmts/plscenes/ogrplscenesdatav1dataset.cpp @@ -266,8 +266,8 @@ json_object *OGRPLScenesDataV1Dataset::RunRequest(const char *pszURL, psResult = (CPLHTTPResult *)CPLCalloc(1, sizeof(CPLHTTPResult)); vsi_l_offset nDataLengthLarge = 0; CPLString osURL(pszURL); - if (osURL[osURL.size() - 1] == '/') - osURL.resize(osURL.size() - 1); + if (osURL.back() == '/') + osURL.pop_back(); if (pszPostContent != nullptr) { osURL += "&POSTFIELDS="; diff --git a/ogr/ogrsf_frmts/pmtiles/vsipmtiles.cpp b/ogr/ogrsf_frmts/pmtiles/vsipmtiles.cpp index 9e78e56e065b..4eb97d68f9ee 100644 --- a/ogr/ogrsf_frmts/pmtiles/vsipmtiles.cpp +++ b/ogr/ogrsf_frmts/pmtiles/vsipmtiles.cpp @@ -141,7 +141,7 @@ VSIPMTilesOpen(const char *pszFilename, std::string &osSubfilename, std::string osFilename(pszFilename); if (!osFilename.empty() && osFilename.back() == '/') - osFilename.resize(osFilename.size() - 1); + osFilename.pop_back(); pszFilename = osFilename.c_str(); nZ = nX = nY = -1; diff --git a/ogr/ogrsf_frmts/vdv/ogrvdvdatasource.cpp b/ogr/ogrsf_frmts/vdv/ogrvdvdatasource.cpp index 15823bd38e61..b861276ee289 100644 --- a/ogr/ogrsf_frmts/vdv/ogrvdvdatasource.cpp +++ b/ogr/ogrsf_frmts/vdv/ogrvdvdatasource.cpp @@ -1048,7 +1048,7 @@ OGRFeature *OGRVDVLayer::GetNextFeature() osToken = papszTokens[i]; // Strip trailing spaces while (!osToken.empty() && osToken.back() == ' ') - osToken.resize(osToken.size() - 1); + osToken.pop_back(); OGRFieldType eFieldType = m_poFeatureDefn->GetFieldDefn(i)->GetType(); if (m_bRecodeFromLatin1 && eFieldType == OFTString) diff --git a/ogr/ogrutils.cpp b/ogr/ogrutils.cpp index 39c11f6c613f..c9edb92dcd1a 100644 --- a/ogr/ogrutils.cpp +++ b/ogr/ogrutils.cpp @@ -151,7 +151,7 @@ std::string intelliround(std::string &s) if (s[i - 2] == '0' && s[i - 3] == '0' && s[i - 4] == '0' && s[i - 5] == '0' && s[i - 6] == '0') { - s.resize(s.size() - 1); + s.pop_back(); } // I don't understand this case exactly. It's like saying if the // value is large enough and there are sufficient sig digits before diff --git a/port/cpl_aws.cpp b/port/cpl_aws.cpp index de5c7478ed10..d2355bbfb9cd 100644 --- a/port/cpl_aws.cpp +++ b/port/cpl_aws.cpp @@ -678,7 +678,7 @@ static bool ReadAWSTokenFile(const std::string &osAWSTokenFile, VSIFree(pabyOut); // Remove trailing end-of-line character if (!awsToken.empty() && awsToken.back() == '\n') - awsToken.resize(awsToken.size() - 1); + awsToken.pop_back(); return !awsToken.empty(); } diff --git a/port/cpl_http.cpp b/port/cpl_http.cpp index a754201ec5e5..449bb36bd39c 100644 --- a/port/cpl_http.cpp +++ b/port/cpl_http.cpp @@ -2110,7 +2110,7 @@ static int CPLHTTPCurlDebugFunction(CURL *handle, curl_infotype type, { std::string osMsg(data, size); if (!osMsg.empty() && osMsg.back() == '\n') - osMsg.resize(osMsg.size() - 1); + osMsg.pop_back(); CPLDebug(pszDebugKey, "%s", osMsg.c_str()); } return 0; diff --git a/port/cpl_vsi_mem.cpp b/port/cpl_vsi_mem.cpp index 5cfd8be55714..e5099e9c20ba 100644 --- a/port/cpl_vsi_mem.cpp +++ b/port/cpl_vsi_mem.cpp @@ -945,7 +945,7 @@ std::string VSIMemFilesystemHandler::NormalizePath(const std::string &in) std::replace(s.begin(), s.end(), '\\', '/'); s.replaceAll("//", '/'); if (!s.empty() && s.back() == '/') - s.resize(s.size() - 1); + s.pop_back(); #if __GNUC__ >= 13 // gcc 13 complains about below explicit std::move() return s; diff --git a/port/cpl_vsil.cpp b/port/cpl_vsil.cpp index f5b3b401de32..8e8f8c81dd3b 100644 --- a/port/cpl_vsil.cpp +++ b/port/cpl_vsil.cpp @@ -1817,7 +1817,7 @@ bool VSIFilesystemHandler::Sync(const char *pszSource, const char *pszTarget, if (osSourceWithoutSlash.back() == '/' || osSourceWithoutSlash.back() == '\\') { - osSourceWithoutSlash.resize(osSourceWithoutSlash.size() - 1); + osSourceWithoutSlash.pop_back(); } if (VSIStatL(osSourceWithoutSlash, &sSource) < 0) { @@ -2235,7 +2235,7 @@ int VSIFilesystemHandler::RmdirRecursive(const char *pszDirname) (osDirnameWithoutEndSlash.back() == '/' || osDirnameWithoutEndSlash.back() == '\\')) { - osDirnameWithoutEndSlash.resize(osDirnameWithoutEndSlash.size() - 1); + osDirnameWithoutEndSlash.pop_back(); } const char SEP = VSIGetDirectorySeparator(pszDirname)[0]; diff --git a/port/cpl_vsil_abstract_archive.cpp b/port/cpl_vsil_abstract_archive.cpp index b90f4137e32a..78ee05e1c378 100644 --- a/port/cpl_vsil_abstract_archive.cpp +++ b/port/cpl_vsil_abstract_archive.cpp @@ -432,7 +432,7 @@ char *VSIArchiveFilesystemHandler::SplitFilename(const char *pszFilename, { const char lastC = osFileInArchive.back(); if (IsEitherSlash(lastC)) - osFileInArchive.resize(osFileInArchive.size() - 1); + osFileInArchive.pop_back(); } return archiveFilename; @@ -563,7 +563,7 @@ char *VSIArchiveFilesystemHandler::SplitFilename(const char *pszFilename, { const char lastC = osFileInArchive.back(); if (IsEitherSlash(lastC)) - osFileInArchive.resize(osFileInArchive.size() - 1); + osFileInArchive.pop_back(); } return archiveFilename; diff --git a/port/cpl_vsil_adls.cpp b/port/cpl_vsil_adls.cpp index 3e701b2f1960..7616ead5dcbb 100644 --- a/port/cpl_vsil_adls.cpp +++ b/port/cpl_vsil_adls.cpp @@ -94,7 +94,7 @@ static std::string RemoveTrailingSlash(const std::string &osFilename) { std::string osWithoutSlash(osFilename); if (!osWithoutSlash.empty() && osWithoutSlash.back() == '/') - osWithoutSlash.resize(osWithoutSlash.size() - 1); + osWithoutSlash.pop_back(); return osWithoutSlash; } @@ -165,7 +165,8 @@ class VSIADLSFSHandler final : public IVSIS3LikeFSHandlerWithMultipartUpload protected: VSICurlHandle *CreateFileHandle(const char *pszFilename) override; - std::string GetURLFromFilename(const std::string &osFilename) override; + std::string + GetURLFromFilename(const std::string &osFilename) const override; char **GetFileList(const char *pszFilename, int nMaxFiles, bool *pbGotFileList) override; @@ -1268,18 +1269,17 @@ void VSIADLSFSHandler::ClearCache() /* GetURLFromFilename() */ /************************************************************************/ -std::string VSIADLSFSHandler::GetURLFromFilename(const std::string &osFilename) +std::string +VSIADLSFSHandler::GetURLFromFilename(const std::string &osFilename) const { - std::string osFilenameWithoutPrefix = + const std::string osFilenameWithoutPrefix = osFilename.substr(GetFSPrefix().size()); - VSIAzureBlobHandleHelper *poHandleHelper = + auto poHandleHelper = std::unique_ptr( VSIAzureBlobHandleHelper::BuildFromURI(osFilenameWithoutPrefix.c_str(), - GetFSPrefix().c_str()); - if (poHandleHelper == nullptr) + GetFSPrefix().c_str())); + if (!poHandleHelper) return std::string(); - std::string osURL(poHandleHelper->GetURLNoKVP()); - delete poHandleHelper; - return osURL; + return poHandleHelper->GetURLNoKVP(); } /************************************************************************/ diff --git a/port/cpl_vsil_az.cpp b/port/cpl_vsil_az.cpp index fe1924dc03c2..8de0aad337c7 100644 --- a/port/cpl_vsil_az.cpp +++ b/port/cpl_vsil_az.cpp @@ -199,7 +199,7 @@ bool VSIDIRAz::AnalyseAzureFileList(const std::string &osBaseURL, { std::string osKey = pszKey; if (!osKey.empty() && osKey.back() == '/') - osKey.resize(osKey.size() - 1); + osKey.pop_back(); if (osKey.size() > osPrefix.size()) { aoNameCount[osKey.c_str() + osPrefix.size()]++; @@ -322,7 +322,7 @@ bool VSIDIRAz::AnalyseAzureFileList(const std::string &osBaseURL, { std::string osKey = pszKey; if (!osKey.empty() && osKey.back() == '/') - osKey.resize(osKey.size() - 1); + osKey.pop_back(); if (osKey.size() > osPrefix.size()) { aoEntries.push_back( @@ -509,7 +509,8 @@ class VSIAzureFSHandler final : public IVSIS3LikeFSHandlerWithMultipartUpload protected: VSICurlHandle *CreateFileHandle(const char *pszFilename) override; - std::string GetURLFromFilename(const std::string &osFilename) override; + std::string + GetURLFromFilename(const std::string &osFilename) const override; VSIAzureBlobHandleHelper *CreateAzHandleHelper(const char *pszURI, bool bAllowNoObject); @@ -1244,7 +1245,7 @@ void VSIAzureWriteHandle::InvalidateParentDirectory() std::string osFilenameWithoutSlash(m_osFilename); if (!osFilenameWithoutSlash.empty() && osFilenameWithoutSlash.back() == '/') - osFilenameWithoutSlash.resize(osFilenameWithoutSlash.size() - 1); + osFilenameWithoutSlash.pop_back(); m_poFS->InvalidateDirContent(CPLGetDirname(osFilenameWithoutSlash.c_str())); } @@ -1423,18 +1424,17 @@ void VSIAzureFSHandler::ClearCache() /* GetURLFromFilename() */ /************************************************************************/ -std::string VSIAzureFSHandler::GetURLFromFilename(const std::string &osFilename) +std::string +VSIAzureFSHandler::GetURLFromFilename(const std::string &osFilename) const { std::string osFilenameWithoutPrefix = osFilename.substr(GetFSPrefix().size()); - VSIAzureBlobHandleHelper *poHandleHelper = + auto poHandleHelper = std::unique_ptr( VSIAzureBlobHandleHelper::BuildFromURI(osFilenameWithoutPrefix.c_str(), - GetFSPrefix().c_str()); - if (poHandleHelper == nullptr) + GetFSPrefix().c_str())); + if (!poHandleHelper) return std::string(); - std::string osURL(poHandleHelper->GetURLNoKVP()); - delete poHandleHelper; - return osURL; + return poHandleHelper->GetURLNoKVP(); } /************************************************************************/ @@ -1730,7 +1730,7 @@ int VSIAzureFSHandler::MkdirInternal(const char *pszDirname, long /* nMode */, } std::string osDirnameWithoutEndSlash(osDirname); - osDirnameWithoutEndSlash.resize(osDirnameWithoutEndSlash.size() - 1); + osDirnameWithoutEndSlash.pop_back(); if (osDirnameWithoutEndSlash.size() > GetFSPrefix().size() && osDirnameWithoutEndSlash.find('/', GetFSPrefix().size()) == std::string::npos) @@ -1892,7 +1892,7 @@ int VSIAzureFSHandler::Rmdir(const char *pszDirname) } std::string osDirnameWithoutEndSlash(osDirname); - osDirnameWithoutEndSlash.resize(osDirnameWithoutEndSlash.size() - 1); + osDirnameWithoutEndSlash.pop_back(); if (osDirnameWithoutEndSlash.size() > GetFSPrefix().size() && osDirnameWithoutEndSlash.find('/', GetFSPrefix().size()) == std::string::npos) @@ -2511,7 +2511,7 @@ VSIDIR *VSIAzureFSHandler::OpenDir(const char *pszPath, int nRecurseDepth, std::string osDirnameWithoutPrefix = pszPath + GetFSPrefix().size(); if (!osDirnameWithoutPrefix.empty() && osDirnameWithoutPrefix.back() == '/') { - osDirnameWithoutPrefix.resize(osDirnameWithoutPrefix.size() - 1); + osDirnameWithoutPrefix.pop_back(); } std::string osBucket(osDirnameWithoutPrefix); @@ -2588,7 +2588,7 @@ bool VSIAzureHandle::IsDirectoryFromExists(const char * /*pszVerb*/, std::string osDirname(m_osFilename); if (osDirname.size() > poFS->GetFSPrefix().size() && osDirname.back() == '/') - osDirname.resize(osDirname.size() - 1); + osDirname.pop_back(); bool bIsDir; if (poFS->ExistsInCacheDirList(osDirname, &bIsDir)) return bIsDir; diff --git a/port/cpl_vsil_chunked_write_handle.cpp b/port/cpl_vsil_chunked_write_handle.cpp index 25b81a5852b7..8fef02d23204 100644 --- a/port/cpl_vsil_chunked_write_handle.cpp +++ b/port/cpl_vsil_chunked_write_handle.cpp @@ -106,7 +106,7 @@ void VSIChunkedWriteHandle::InvalidateParentDirectory() std::string osFilenameWithoutSlash(m_osFilename); if (!osFilenameWithoutSlash.empty() && osFilenameWithoutSlash.back() == '/') - osFilenameWithoutSlash.resize(osFilenameWithoutSlash.size() - 1); + osFilenameWithoutSlash.pop_back(); m_poFS->InvalidateDirContent(CPLGetDirname(osFilenameWithoutSlash.c_str())); } diff --git a/port/cpl_vsil_curl.cpp b/port/cpl_vsil_curl.cpp index 237c7eb17319..6988016c5d01 100644 --- a/port/cpl_vsil_curl.cpp +++ b/port/cpl_vsil_curl.cpp @@ -4771,8 +4771,8 @@ static bool VSICurlParseFullFTPLine(char *pszLine, char *&pszFilename, /* GetURLFromFilename() */ /************************************************************************/ -std::string -VSICurlFilesystemHandlerBase::GetURLFromFilename(const std::string &osFilename) +std::string VSICurlFilesystemHandlerBase::GetURLFromFilename( + const std::string &osFilename) const { return VSICurlGetURLFromFilename(osFilename.c_str(), nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, @@ -5824,7 +5824,7 @@ void NetworkStatisticsLogger::Stats::AsJSON(CPLJSONObject &oJSON) const if (!osName.empty() && osName[0] == '/') osName = osName.substr(1); if (!osName.empty() && osName.back() == '/') - osName.resize(osName.size() - 1); + osName.pop_back(); oJSON.Add(("handlers/" + osName).c_str(), childJSON); } else if (kv.first.eType == ContextPathType::FILE) diff --git a/port/cpl_vsil_curl_class.h b/port/cpl_vsil_curl_class.h index 90120b069f2c..7691c4927f68 100644 --- a/port/cpl_vsil_curl_class.h +++ b/port/cpl_vsil_curl_class.h @@ -333,7 +333,7 @@ class VSICurlFilesystemHandlerBase : public VSIFilesystemHandler void SetCachedDirList(const char *pszURL, CachedDirList &oCachedDirList); bool ExistsInCacheDirList(const std::string &osDirname, bool *pbIsDir); - virtual std::string GetURLFromFilename(const std::string &osFilename); + virtual std::string GetURLFromFilename(const std::string &osFilename) const; std::string GetStreamingFilename(const std::string &osFilename) const override = 0; diff --git a/port/cpl_vsil_gs.cpp b/port/cpl_vsil_gs.cpp index 3c895d3c2287..510d23661a26 100644 --- a/port/cpl_vsil_gs.cpp +++ b/port/cpl_vsil_gs.cpp @@ -83,7 +83,8 @@ class VSIGSFSHandler final : public IVSIS3LikeFSHandlerWithMultipartUpload return m_osPrefix; } - std::string GetURLFromFilename(const std::string &osFilename) override; + std::string + GetURLFromFilename(const std::string &osFilename) const override; IVSIS3LikeHandleHelper *CreateHandleHelper(const char *pszURI, bool bAllowNoObject) override; @@ -291,17 +292,17 @@ char *VSIGSFSHandler::GetSignedURL(const char *pszFilename, /* GetURLFromFilename() */ /************************************************************************/ -std::string VSIGSFSHandler::GetURLFromFilename(const std::string &osFilename) +std::string +VSIGSFSHandler::GetURLFromFilename(const std::string &osFilename) const { - std::string osFilenameWithoutPrefix = + const std::string osFilenameWithoutPrefix = osFilename.substr(GetFSPrefix().size()); - VSIGSHandleHelper *poHandleHelper = VSIGSHandleHelper::BuildFromURI( - osFilenameWithoutPrefix.c_str(), GetFSPrefix().c_str()); + auto poHandleHelper = + std::unique_ptr(VSIGSHandleHelper::BuildFromURI( + osFilenameWithoutPrefix.c_str(), GetFSPrefix().c_str())); if (poHandleHelper == nullptr) return std::string(); - std::string osURL(poHandleHelper->GetURL()); - delete poHandleHelper; - return osURL; + return poHandleHelper->GetURL(); } /************************************************************************/ diff --git a/port/cpl_vsil_oss.cpp b/port/cpl_vsil_oss.cpp index e2e20a699fae..d4ea4639b927 100644 --- a/port/cpl_vsil_oss.cpp +++ b/port/cpl_vsil_oss.cpp @@ -68,7 +68,8 @@ class VSIOSSFSHandler final : public IVSIS3LikeFSHandlerWithMultipartUpload protected: VSICurlHandle *CreateFileHandle(const char *pszFilename) override; - std::string GetURLFromFilename(const std::string &osFilename) override; + std::string + GetURLFromFilename(const std::string &osFilename) const override; const char *GetDebugKey() const override { @@ -235,26 +236,26 @@ VSICurlHandle *VSIOSSFSHandler::CreateFileHandle(const char *pszFilename) } /************************************************************************/ -/* GetURLFromFilename() */ +/* GetURLFromFilename() */ /************************************************************************/ -std::string VSIOSSFSHandler::GetURLFromFilename(const std::string &osFilename) +std::string +VSIOSSFSHandler::GetURLFromFilename(const std::string &osFilename) const { - std::string osFilenameWithoutPrefix = + const std::string osFilenameWithoutPrefix = osFilename.substr(GetFSPrefix().size()); - VSIOSSHandleHelper *poHandleHelper = VSIOSSHandleHelper::BuildFromURI( - osFilenameWithoutPrefix.c_str(), GetFSPrefix().c_str(), true); - if (poHandleHelper == nullptr) + auto poHandleHelper = + std::unique_ptr(VSIOSSHandleHelper::BuildFromURI( + osFilenameWithoutPrefix.c_str(), GetFSPrefix().c_str(), true)); + if (!poHandleHelper) { - return ""; + return std::string(); } std::string osBaseURL(poHandleHelper->GetURL()); if (!osBaseURL.empty() && osBaseURL.back() == '/') - osBaseURL.resize(osBaseURL.size() - 1); - delete poHandleHelper; - + osBaseURL.pop_back(); return osBaseURL; } diff --git a/port/cpl_vsil_s3.cpp b/port/cpl_vsil_s3.cpp index 5225e45b9f1e..d0d8aec87a7b 100644 --- a/port/cpl_vsil_s3.cpp +++ b/port/cpl_vsil_s3.cpp @@ -167,7 +167,7 @@ void VSIDIRWithMissingDirSynthesis::SynthetizeMissingDirectories( } while (depth <= m_aosSubpathsStack.size()) - m_aosSubpathsStack.resize(m_aosSubpathsStack.size() - 1); + m_aosSubpathsStack.pop_back(); if (!m_aosSubpathsStack.empty() && osCurSubdir.compare(0, nLastSlashPos, m_aosSubpathsStack.back()) != @@ -258,7 +258,7 @@ bool VSIDIRS3::AnalyseS3FileList( { std::string osKey = pszKey; if (!osKey.empty() && osKey.back() == '/') - osKey.resize(osKey.size() - 1); + osKey.pop_back(); if (osKey.size() > osPrefix.size()) { ret = true; @@ -391,7 +391,7 @@ bool VSIDIRS3::AnalyseS3FileList( { std::string osKey = pszKey; if (!osKey.empty() && osKey.back() == '/') - osKey.resize(osKey.size() - 1); + osKey.pop_back(); if (osKey.size() > osPrefix.size()) { aoEntries.push_back( @@ -645,7 +645,8 @@ class VSIS3FSHandler final : public IVSIS3LikeFSHandlerWithMultipartUpload protected: VSICurlHandle *CreateFileHandle(const char *pszFilename) override; - std::string GetURLFromFilename(const std::string &osFilename) override; + std::string + GetURLFromFilename(const std::string &osFilename) const override; const char *GetDebugKey() const override { @@ -1202,7 +1203,7 @@ void VSIMultipartWriteHandle::InvalidateParentDirectory() std::string osFilenameWithoutSlash(m_osFilename); if (!osFilenameWithoutSlash.empty() && osFilenameWithoutSlash.back() == '/') - osFilenameWithoutSlash.resize(osFilenameWithoutSlash.size() - 1); + osFilenameWithoutSlash.pop_back(); m_poFS->InvalidateDirContent(CPLGetDirname(osFilenameWithoutSlash.c_str())); } @@ -1530,7 +1531,7 @@ bool IVSIS3LikeFSHandlerWithMultipartUpload::AbortPendingUploads( std::string osDirnameWithoutPrefix = pszFilename + GetFSPrefix().size(); if (!osDirnameWithoutPrefix.empty() && osDirnameWithoutPrefix.back() == '/') { - osDirnameWithoutPrefix.resize(osDirnameWithoutPrefix.size() - 1); + osDirnameWithoutPrefix.pop_back(); } std::string osBucket(osDirnameWithoutPrefix); @@ -2120,7 +2121,7 @@ int IVSIS3LikeFSHandler::RmdirRecursiveInternal(const char *pszDirname, std::string osDirnameWithoutEndSlash(pszDirname); if (!osDirnameWithoutEndSlash.empty() && osDirnameWithoutEndSlash.back() == '/') - osDirnameWithoutEndSlash.resize(osDirnameWithoutEndSlash.size() - 1); + osDirnameWithoutEndSlash.pop_back(); CPLStringList aosOptions; aosOptions.SetNameValue("CACHE_ENTRIES", "FALSE"); @@ -2641,7 +2642,7 @@ int IVSIS3LikeFSHandler::MkdirInternal(const char *pszDirname, long /*nMode*/, if (ret == 0) { std::string osDirnameWithoutEndSlash(osDirname); - osDirnameWithoutEndSlash.resize(osDirnameWithoutEndSlash.size() - 1); + osDirnameWithoutEndSlash.pop_back(); InvalidateDirContent(CPLGetDirname(osDirnameWithoutEndSlash.c_str())); @@ -2708,7 +2709,7 @@ int IVSIS3LikeFSHandler::Rmdir(const char *pszDirname) } std::string osDirnameWithoutEndSlash(osDirname); - osDirnameWithoutEndSlash.resize(osDirnameWithoutEndSlash.size() - 1); + osDirnameWithoutEndSlash.pop_back(); if (osDirnameWithoutEndSlash.find('/', GetFSPrefix().size()) == std::string::npos) { @@ -2752,7 +2753,7 @@ int IVSIS3LikeFSHandler::Stat(const char *pszFilename, VSIStatBufL *pStatBuf, std::string osFilenameWithoutSlash(osFilename); if (osFilenameWithoutSlash.back() == '/') - osFilenameWithoutSlash.resize(osFilenameWithoutSlash.size() - 1); + osFilenameWithoutSlash.pop_back(); // If there's directory content for the directory where this file belongs // to, use it to detect if the object does not exist @@ -2825,22 +2826,22 @@ VSICurlHandle *VSIS3FSHandler::CreateFileHandle(const char *pszFilename) /* GetURLFromFilename() */ /************************************************************************/ -std::string VSIS3FSHandler::GetURLFromFilename(const std::string &osFilename) +std::string +VSIS3FSHandler::GetURLFromFilename(const std::string &osFilename) const { - std::string osFilenameWithoutPrefix = + const std::string osFilenameWithoutPrefix = osFilename.substr(GetFSPrefix().size()); - VSIS3HandleHelper *poS3HandleHelper = VSIS3HandleHelper::BuildFromURI( - osFilenameWithoutPrefix.c_str(), GetFSPrefix().c_str(), true); - if (poS3HandleHelper == nullptr) + auto poS3HandleHelper = + std::unique_ptr(VSIS3HandleHelper::BuildFromURI( + osFilenameWithoutPrefix.c_str(), GetFSPrefix().c_str(), true)); + if (!poS3HandleHelper) { - return ""; + return std::string(); } std::string osBaseURL(poS3HandleHelper->GetURL()); if (!osBaseURL.empty() && osBaseURL.back() == '/') - osBaseURL.resize(osBaseURL.size() - 1); - delete poS3HandleHelper; - + osBaseURL.pop_back(); return osBaseURL; } @@ -3266,7 +3267,7 @@ VSIDIR *IVSIS3LikeFSHandler::OpenDir(const char *pszPath, int nRecurseDepth, std::string osDirnameWithoutPrefix = pszPath + GetFSPrefix().size(); if (!osDirnameWithoutPrefix.empty() && osDirnameWithoutPrefix.back() == '/') { - osDirnameWithoutPrefix.resize(osDirnameWithoutPrefix.size() - 1); + osDirnameWithoutPrefix.pop_back(); } std::string osBucket(osDirnameWithoutPrefix); @@ -3961,7 +3962,7 @@ bool IVSIS3LikeFSHandler::Sync(const char *pszSource, const char *pszTarget, if (osSourceWithoutSlash.back() == '/' || osSourceWithoutSlash.back() == '\\') { - osSourceWithoutSlash.resize(osSourceWithoutSlash.size() - 1); + osSourceWithoutSlash.pop_back(); } const CPLHTTPRetryParameters oRetryParameters( diff --git a/port/cpl_vsil_swift.cpp b/port/cpl_vsil_swift.cpp index 6cddce26fffe..8353d247cd19 100644 --- a/port/cpl_vsil_swift.cpp +++ b/port/cpl_vsil_swift.cpp @@ -149,7 +149,7 @@ void VSICurlFilesystemHandlerBase::AnalyseSwiftFileList( { osNextMarker = osSubdir; if (osSubdir.back() == '/') - osSubdir.resize(osSubdir.size() - 1); + osSubdir.pop_back(); if (STARTS_WITH(osSubdir.c_str(), osPrefix.c_str())) { @@ -212,7 +212,8 @@ class VSISwiftFSHandler final : public IVSIS3LikeFSHandler protected: VSICurlHandle *CreateFileHandle(const char *pszFilename) override; - std::string GetURLFromFilename(const std::string &osFilename) override; + std::string + GetURLFromFilename(const std::string &osFilename) const override; const char *GetDebugKey() const override { @@ -385,22 +386,22 @@ VSICurlHandle *VSISwiftFSHandler::CreateFileHandle(const char *pszFilename) /* GetURLFromFilename() */ /************************************************************************/ -std::string VSISwiftFSHandler::GetURLFromFilename(const std::string &osFilename) +std::string +VSISwiftFSHandler::GetURLFromFilename(const std::string &osFilename) const { - std::string osFilenameWithoutPrefix = + const std::string osFilenameWithoutPrefix = osFilename.substr(GetFSPrefix().size()); - VSISwiftHandleHelper *poHandleHelper = VSISwiftHandleHelper::BuildFromURI( - osFilenameWithoutPrefix.c_str(), GetFSPrefix().c_str()); - if (poHandleHelper == nullptr) + auto poHandleHelper = std::unique_ptr( + VSISwiftHandleHelper::BuildFromURI(osFilenameWithoutPrefix.c_str(), + GetFSPrefix().c_str())); + if (!poHandleHelper) { - return ""; + return std::string(); } std::string osBaseURL(poHandleHelper->GetURL()); if (!osBaseURL.empty() && osBaseURL.back() == '/') - osBaseURL.resize(osBaseURL.size() - 1); - delete poHandleHelper; - + osBaseURL.pop_back(); return osBaseURL; } @@ -430,7 +431,7 @@ int VSISwiftFSHandler::Stat(const char *pszFilename, VSIStatBufL *pStatBuf, std::string osFilename(pszFilename); if (osFilename.back() == '/') - osFilename.resize(osFilename.size() - 1); + osFilename.pop_back(); memset(pStatBuf, 0, sizeof(VSIStatBufL)); @@ -516,7 +517,7 @@ char **VSISwiftFSHandler::GetFileList(const char *pszDirname, int nMaxFiles, std::string osDirnameWithoutPrefix = pszDirname + GetFSPrefix().size(); if (!osDirnameWithoutPrefix.empty() && osDirnameWithoutPrefix.back() == '/') { - osDirnameWithoutPrefix.resize(osDirnameWithoutPrefix.size() - 1); + osDirnameWithoutPrefix.pop_back(); } std::string osBucket(osDirnameWithoutPrefix); diff --git a/port/cpl_vsil_tar.cpp b/port/cpl_vsil_tar.cpp index 202289c842d5..b5b22845c292 100644 --- a/port/cpl_vsil_tar.cpp +++ b/port/cpl_vsil_tar.cpp @@ -438,7 +438,7 @@ int VSITarReader::GotoNextFile() return FALSE; osNextFileName.resize(static_cast(nNextFileSize)); if (osNextFileName.back() == '\0') - osNextFileName.resize(osNextFileName.size() - 1); + osNextFileName.pop_back(); } else { diff --git a/port/cpl_vsil_webhdfs.cpp b/port/cpl_vsil_webhdfs.cpp index be4fa10eb500..a63455b71866 100644 --- a/port/cpl_vsil_webhdfs.cpp +++ b/port/cpl_vsil_webhdfs.cpp @@ -81,7 +81,8 @@ class VSIWebHDFSFSHandler final : public VSICurlFilesystemHandlerBaseWritable char **GetFileList(const char *pszFilename, int nMaxFiles, bool *pbGotFileList) override; - std::string GetURLFromFilename(const std::string &osFilename) override; + std::string + GetURLFromFilename(const std::string &osFilename) const override; VSIVirtualHandleUniquePtr CreateWriteHandle(const char *pszFilename, @@ -283,7 +284,7 @@ void VSIWebHDFSWriteHandle::InvalidateParentDirectory() std::string osFilenameWithoutSlash(m_osFilename); if (!osFilenameWithoutSlash.empty() && osFilenameWithoutSlash.back() == '/') - osFilenameWithoutSlash.resize(osFilenameWithoutSlash.size() - 1); + osFilenameWithoutSlash.pop_back(); m_poFS->InvalidateDirContent(CPLGetDirname(osFilenameWithoutSlash.c_str())); } @@ -564,11 +565,11 @@ VSICurlHandle *VSIWebHDFSFSHandler::CreateFileHandle(const char *pszFilename) } /************************************************************************/ -/* GetURLFromFilename() */ +/* GetURLFromFilename() */ /************************************************************************/ std::string -VSIWebHDFSFSHandler::GetURLFromFilename(const std::string &osFilename) +VSIWebHDFSFSHandler::GetURLFromFilename(const std::string &osFilename) const { return osFilename.substr(GetFSPrefix().size()); } @@ -753,7 +754,7 @@ int VSIWebHDFSFSHandler::Unlink(const char *pszFilename) std::string osFilenameWithoutSlash(pszFilename); if (!osFilenameWithoutSlash.empty() && osFilenameWithoutSlash.back() == '/') - osFilenameWithoutSlash.resize(osFilenameWithoutSlash.size() - 1); + osFilenameWithoutSlash.pop_back(); InvalidateDirContent(CPLGetDirname(osFilenameWithoutSlash.c_str())); } @@ -794,7 +795,7 @@ int VSIWebHDFSFSHandler::Mkdir(const char *pszDirname, long nMode) if (!osDirnameWithoutEndSlash.empty() && osDirnameWithoutEndSlash.back() == '/') { - osDirnameWithoutEndSlash.resize(osDirnameWithoutEndSlash.size() - 1); + osDirnameWithoutEndSlash.pop_back(); } if (osDirnameWithoutEndSlash.find("/webhdfs/v1") == diff --git a/port/cplkeywordparser.cpp b/port/cplkeywordparser.cpp index fed39a0dc404..e3daaf21ce13 100644 --- a/port/cplkeywordparser.cpp +++ b/port/cplkeywordparser.cpp @@ -247,7 +247,7 @@ bool CPLKeywordParser::ReadPair(CPLString &osName, CPLString &osValue) osTxt.resize(nSemiColonPos); osValue = osTxt; while (!osValue.empty() && osValue.back() == ' ') - osValue.resize(osValue.size() - 1); + osValue.pop_back(); return true; } }