From b38ee9c8ace6dc3d194867bbefad8c7d0e7508f3 Mon Sep 17 00:00:00 2001 From: Mike Fleetwood Date: Sat, 6 Nov 2021 13:55:21 +0000 Subject: [PATCH] Return and use constant reference from SWRaid::get_array() (!94) Have to use a second constant reference variable array_path_2 in GParted_Core::set_mountpoints() because by design C++ does not implement rebinding of references [1]. [1] why doesn't C++ allow rebinding a reference? https://stackoverflow.com/questions/27037744/why-doesnt-c-allow-rebinding-a-reference Closes !94 - Make more getter methods use return-by-constant-reference --- include/SWRaid_Info.h | 2 +- src/GParted_Core.cc | 10 +++++----- src/SWRaid_Info.cc | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/SWRaid_Info.h b/include/SWRaid_Info.h index b1a14a58..5433690d 100644 --- a/include/SWRaid_Info.h +++ b/include/SWRaid_Info.h @@ -59,7 +59,7 @@ public: static bool is_member( const Glib::ustring & member_path ); static bool is_member_active( const Glib::ustring & member_path ); static FSType get_fstype(const Glib::ustring& member_path); - static Glib::ustring get_array( const Glib::ustring & member_path ); + static const Glib::ustring& get_array(const Glib::ustring& member_path); static Glib::ustring get_uuid( const Glib::ustring & member_path ); static Glib::ustring get_label( const Glib::ustring & member_path ); diff --git a/src/GParted_Core.cc b/src/GParted_Core.cc index 4eca00e7..ece68950 100644 --- a/src/GParted_Core.cc +++ b/src/GParted_Core.cc @@ -1469,22 +1469,22 @@ void GParted_Core::set_mountpoints( Partition & partition ) } else if (partition.fstype == FS_LINUX_SWRAID) { - Glib::ustring array_path = SWRaid_Info::get_array( partition.get_path() ); + const Glib::ustring& array_path = SWRaid_Info::get_array(partition.get_path()); if ( ! array_path.empty() ) partition.add_mountpoint( array_path ); } else if (partition.fstype == FS_ATARAID) { - Glib::ustring array_path = SWRaid_Info::get_array(partition.get_path()); + const Glib::ustring& array_path = SWRaid_Info::get_array(partition.get_path()); if (! array_path.empty()) { partition.add_mountpoint(array_path); } else { - array_path = dmraid.get_array(partition.get_path()); - if (! array_path.empty()) - partition.add_mountpoint(array_path); + const Glib::ustring& array_path_2 = dmraid.get_array(partition.get_path()); + if (! array_path_2.empty()) + partition.add_mountpoint(array_path_2); } } else if (partition.fstype == FS_LUKS) diff --git a/src/SWRaid_Info.cc b/src/SWRaid_Info.cc index a719762d..217e9521 100644 --- a/src/SWRaid_Info.cc +++ b/src/SWRaid_Info.cc @@ -86,7 +86,7 @@ FSType SWRaid_Info::get_fstype(const Glib::ustring& member_path) // Return array /dev entry (e.g. "/dev/md1") containing the specified member, or "" if the // array is not running or there is no such member. -Glib::ustring SWRaid_Info::get_array( const Glib::ustring & member_path ) +const Glib::ustring& SWRaid_Info::get_array(const Glib::ustring& member_path) { initialise_if_required(); const SWRaid_Member & memb = get_cache_entry_by_member( member_path );