Browse Source

Consistent behavior of copy constructor and assignment operator

Source commit: 0ddd66ca949035c17c4b0ac081145b64fcafe287
Martin Prikryl 4 years ago
parent
commit
e622af34a8
2 changed files with 12 additions and 8 deletions
  1. 11 8
      source/core/FileMasks.cpp
  2. 1 0
      source/core/FileMasks.h

+ 11 - 8
source/core/FileMasks.cpp

@@ -247,10 +247,7 @@ __fastcall TFileMasks::TFileMasks(int ForceDirectoryMasks)
 __fastcall TFileMasks::TFileMasks(const TFileMasks & Source)
 {
   Init();
-  FForceDirectoryMasks = Source.FForceDirectoryMasks;
-  FNoImplicitMatchWithDirExcludeMask = Source.FNoImplicitMatchWithDirExcludeMask;
-  FAllDirsAreImplicitlyIncluded = Source.FAllDirsAreImplicitlyIncluded;
-  SetStr(Source.Masks, false);
+  DoCopy(Source);
 }
 //---------------------------------------------------------------------------
 __fastcall TFileMasks::TFileMasks(const UnicodeString & AMasks)
@@ -264,6 +261,14 @@ __fastcall TFileMasks::~TFileMasks()
   Clear();
 }
 //---------------------------------------------------------------------------
+void TFileMasks::DoCopy(const TFileMasks & Source)
+{
+  FForceDirectoryMasks = Source.FForceDirectoryMasks;
+  FNoImplicitMatchWithDirExcludeMask = Source.FNoImplicitMatchWithDirExcludeMask;
+  FAllDirsAreImplicitlyIncluded = Source.FAllDirsAreImplicitlyIncluded;
+  SetStr(Source.Masks, false);
+}
+//---------------------------------------------------------------------------
 void __fastcall TFileMasks::Init()
 {
   FForceDirectoryMasks = -1;
@@ -477,10 +482,8 @@ TFileMasks & __fastcall TFileMasks::operator =(const UnicodeString & rhs)
 //---------------------------------------------------------------------------
 TFileMasks & __fastcall TFileMasks::operator =(const TFileMasks & rhm)
 {
-  FForceDirectoryMasks = rhm.FForceDirectoryMasks;
-  FNoImplicitMatchWithDirExcludeMask = rhm.FNoImplicitMatchWithDirExcludeMask;
-  FAllDirsAreImplicitlyIncluded = rhm.FAllDirsAreImplicitlyIncluded;
-  Masks = rhm.Masks;
+  DoInit(true);
+  DoCopy(rhm);
   return *this;
 }
 //---------------------------------------------------------------------------

+ 1 - 0
source/core/FileMasks.h

@@ -110,6 +110,7 @@ private:
   static inline void __fastcall ReleaseMaskMask(TMaskMask & MaskMask);
   inline void __fastcall Init();
   void __fastcall DoInit(bool Delete);
+  void DoCopy(const TFileMasks & Source);
   void __fastcall Clear();
   static void __fastcall Clear(TMasks & Masks);
   static void __fastcall TrimEx(UnicodeString & Str, int & Start, int & End);