diff --git a/port/cpl_vsil_adls.cpp b/port/cpl_vsil_adls.cpp index 3e701b2f1960..d37f64a23d0b 100644 --- a/port/cpl_vsil_adls.cpp +++ b/port/cpl_vsil_adls.cpp @@ -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..cce23faf875d 100644 --- a/port/cpl_vsil_az.cpp +++ b/port/cpl_vsil_az.cpp @@ -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); @@ -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(); } /************************************************************************/ diff --git a/port/cpl_vsil_curl.cpp b/port/cpl_vsil_curl.cpp index 237c7eb17319..692073e23cb4 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, 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 e8350cb2ea87..46faa2f9a929 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; @@ -292,17 +293,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..39304b44661d 100644 --- a/port/cpl_vsil_s3.cpp +++ b/port/cpl_vsil_s3.cpp @@ -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 { @@ -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; } diff --git a/port/cpl_vsil_swift.cpp b/port/cpl_vsil_swift.cpp index 6cddce26fffe..40edc5619d38 100644 --- a/port/cpl_vsil_swift.cpp +++ b/port/cpl_vsil_swift.cpp @@ -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; } diff --git a/port/cpl_vsil_webhdfs.cpp b/port/cpl_vsil_webhdfs.cpp index be4fa10eb500..d94fce3da7f8 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, @@ -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()); }