diff --git a/sakura_core/cmd/CViewCommander_Clipboard.cpp b/sakura_core/cmd/CViewCommander_Clipboard.cpp index 63e9dd1109..3a423881d4 100644 --- a/sakura_core/cmd/CViewCommander_Clipboard.cpp +++ b/sakura_core/cmd/CViewCommander_Clipboard.cpp @@ -65,7 +65,7 @@ void CViewCommander::Command_CUT( void ) ErrorBeep(); return; } - cmemBuf.Clear(); + cmemBuf.shrink_to_empty(); /* カーソル位置または選択エリアを削除 */ m_pCommanderView->DeleteData( true ); @@ -116,7 +116,7 @@ void CViewCommander::Command_COPY( return; } } - cmemBuf.Clear(); + cmemBuf.shrink_to_empty(); /* 選択範囲の後片付け */ if( !bIgnoreLockAndDisable ){ diff --git a/sakura_core/cmd/CViewCommander_Convert.cpp b/sakura_core/cmd/CViewCommander_Convert.cpp index a0ca035de0..88f0babb25 100644 --- a/sakura_core/cmd/CViewCommander_Convert.cpp +++ b/sakura_core/cmd/CViewCommander_Convert.cpp @@ -227,7 +227,7 @@ void CViewCommander::Command_BASE64DECODE( void ) if( !bret ){ return; } - ctextBuf.Clear(); + ctextBuf.shrink_to_empty(); /* 保存ダイアログ モーダルダイアログの表示 */ TCHAR szPath[_MAX_PATH] = _T(""); @@ -276,7 +276,7 @@ void CViewCommander::Command_UUDECODE( void ) return; } decoder.CopyFilename( szPath ); - ctextBuf.Clear(); + ctextBuf.shrink_to_empty(); /* 保存ダイアログ モーダルダイアログの表示 */ if( !GetDocument()->m_cDocFileOperation.SaveFileDialog( szPath ) ){ diff --git a/sakura_core/cmd/CViewCommander_File.cpp b/sakura_core/cmd/CViewCommander_File.cpp index 01803ff4bc..314b833b0a 100644 --- a/sakura_core/cmd/CViewCommander_File.cpp +++ b/sakura_core/cmd/CViewCommander_File.cpp @@ -728,7 +728,7 @@ BOOL CViewCommander::Command_PUTFILE( pcUtf16->GetBom(cmemBom._GetMemory()); cMem2.AppendNativeData(cmemBom); cMem2.AppendNativeData(cMem); - cMem.Clear(); + cMem.shrink_to_empty(); pConvBuffer = &cMem2; }else{ pConvBuffer = &cMem; diff --git a/sakura_core/mem/CNative.cpp b/sakura_core/mem/CNative.cpp index 7f6a2e7959..5f7437cfe2 100644 --- a/sakura_core/mem/CNative.cpp +++ b/sakura_core/mem/CNative.cpp @@ -2,8 +2,10 @@ #include "StdAfx.h" #include "CNative.h" -//! 空っぽにする -void CNative::Clear() +/* + バッファサイズを縮小して空にする。 +*/ +void CNative::shrink_to_empty() { this->SetRawData("",0); } diff --git a/sakura_core/mem/CNative.h b/sakura_core/mem/CNative.h index b99ff8f0d7..6e4896e9c8 100644 --- a/sakura_core/mem/CNative.h +++ b/sakura_core/mem/CNative.h @@ -35,8 +35,14 @@ class CNative : protected CMemory{ const CMemory* _GetMemory() const{ return static_cast(this); } public: - //汎用 - void Clear(); //!< 空っぽにする + /*! + バッファサイズを縮小して空にする。 + + 1. std::basic_string::shrink_to_fit() と同様にメモリサイズを縮小させる。 + (メモリサイズを縮小する際にメモリの再確保が行われる。) + 2. それに加えてデータを空にする。 + */ + void shrink_to_empty(); }; #include "mem/CNativeA.h" diff --git a/sakura_core/view/CEditView_Command_New.cpp b/sakura_core/view/CEditView_Command_New.cpp index 3becb3608d..7184373279 100644 --- a/sakura_core/view/CEditView_Command_New.cpp +++ b/sakura_core/view/CEditView_Command_New.cpp @@ -160,7 +160,7 @@ void CEditView::InsertData_CEditView( bHintNext = true; } StringToOpeLineData( cMem.GetStringPtr(), cMem.GetStringLength(), insData, opeSeq ); - cMem.Clear(); + cMem.shrink_to_empty(); nColumnFrom = LineIndexToColumn( pcLayout, nIdxFrom ); } else{ @@ -181,7 +181,7 @@ void CEditView::InsertData_CEditView( } cMem.AppendString( pData, nDataLen ); StringToOpeLineData( cMem.GetStringPtr(), cMem.GetStringLength(), insData, opeSeq ); - cMem.Clear(); + cMem.shrink_to_empty(); }else{ StringToOpeLineData( pData, nDataLen, insData, opeSeq ); }