From f1f5d1f3393ab78f35a738d7381e6fa5b9dcbde4 Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Sun, 6 Aug 2023 14:41:21 +0900 Subject: [PATCH] Wrap ps3fscred with std::unique_ptr This removes many manual memory deallocations. --- src/s3fs.cpp | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/src/s3fs.cpp b/src/s3fs.cpp index f2aadc8..6ed082e 100644 --- a/src/s3fs.cpp +++ b/src/s3fs.cpp @@ -76,7 +76,7 @@ static mode_t mp_mode = 0; // mode of mount point static mode_t mp_umask = 0; // umask for mount point static bool is_mp_umask = false;// default does not set. static std::string mountpoint; -static S3fsCred* ps3fscred = nullptr; // using only in this file +static std::unique_ptr ps3fscred; // using only in this file static std::string mimetype_file; static bool nocopyapi = false; static bool norenameapi = false; @@ -5477,10 +5477,9 @@ int main(int argc, char* argv[]) // set credential object // - ps3fscred = new S3fsCred(); - if(!S3fsCurl::InitCredentialObject(ps3fscred)){ + ps3fscred.reset(new S3fsCred()); + if(!S3fsCurl::InitCredentialObject(ps3fscred.get())){ S3FS_PRN_EXIT("Failed to setup credential object to s3fs curl."); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5489,13 +5488,11 @@ int main(int argc, char* argv[]) case 0: if(strcmp(long_opts[option_index].name, "version") == 0){ show_version(); - delete ps3fscred; exit(EXIT_SUCCESS); } break; case 'h': show_help(); - delete ps3fscred; exit(EXIT_SUCCESS); case 'o': break; @@ -5509,7 +5506,6 @@ int main(int argc, char* argv[]) case 'u': // --incomplete-mpu-list if(utility_incomp_type::NO_UTILITY_MODE != utility_mode){ S3FS_PRN_EXIT("already utility mode option is specified."); - delete ps3fscred; exit(EXIT_FAILURE); } utility_mode = utility_incomp_type::INCOMP_TYPE_LIST; @@ -5517,7 +5513,6 @@ int main(int argc, char* argv[]) case 'a': // --incomplete-mpu-abort if(utility_incomp_type::NO_UTILITY_MODE != utility_mode){ S3FS_PRN_EXIT("already utility mode option is specified."); - delete ps3fscred; exit(EXIT_FAILURE); } utility_mode = utility_incomp_type::INCOMP_TYPE_ABORT; @@ -5528,14 +5523,12 @@ int main(int argc, char* argv[]) }else if(nullptr != optarg){ if(!convert_unixtime_from_option_arg(optarg, incomp_abort_time)){ S3FS_PRN_EXIT("--incomplete-mpu-abort option argument is wrong."); - delete ps3fscred; exit(EXIT_FAILURE); } } // if optarg is null, incomp_abort_time is 24H(default) break; default: - delete ps3fscred; exit(EXIT_FAILURE); } } @@ -5545,14 +5538,12 @@ int main(int argc, char* argv[]) // Load SSE environment if(!S3fsCurl::LoadEnvSse()){ S3FS_PRN_EXIT("something wrong about SSE environment."); - delete ps3fscred; exit(EXIT_FAILURE); } // ssl init if(!s3fs_init_global_ssl()){ S3FS_PRN_EXIT("could not initialize for ssl libraries."); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5560,7 +5551,6 @@ int main(int argc, char* argv[]) if(!init_parser_xml_lock()){ S3FS_PRN_EXIT("could not initialize mutex for xml parser."); s3fs_destroy_global_ssl(); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5593,7 +5583,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5609,7 +5598,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5627,7 +5615,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } if(!S3fsCurl::FinalCheckSse()){ @@ -5636,7 +5623,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5657,7 +5643,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5673,7 +5658,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } } @@ -5685,7 +5669,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5696,7 +5679,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5731,7 +5713,6 @@ int main(int argc, char* argv[]) S3fsCurl::DestroyS3fsCurl(); s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } } @@ -5745,7 +5726,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(exitcode); } @@ -5762,7 +5742,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; exit(EXIT_FAILURE); } @@ -5825,7 +5804,6 @@ int main(int argc, char* argv[]) s3fs_destroy_global_ssl(); destroy_parser_xml_lock(); destroy_basename_lock(); - delete ps3fscred; delete pHasMpStat; // cleanup xml2