1
0
Эх сурвалжийг харах

Consistent behavior of copy constructor and assignment operator

(cherry picked from commit e622af34a84db3fb5685a86edfd46f612b90230a)

Source commit: 05259bf179885999d8f6076947c5a4b6ce23c4a7
Martin Prikryl 3 жил өмнө
parent
commit
1d8cf6407e

+ 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);