From: Kimmo Varis Date: Thu, 10 Apr 2003 18:57:04 +0000 (+0000) Subject: PATCH: [ 717688 ] CrystalEditor optimisations and memleaks - fix tab bug. X-Git-Tag: 2.16.5~8053 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=65b980d791acc8963e3e29eac4c5680d2c2b5569;p=winmerge-jp%2Fwinmerge-jp.git PATCH: [ 717688 ] CrystalEditor optimisations and memleaks - fix tab bug. --- diff --git a/Src/editlib/ccrystaltextview.cpp b/Src/editlib/ccrystaltextview.cpp index 3426f038c..7c5302921 100644 --- a/Src/editlib/ccrystaltextview.cpp +++ b/Src/editlib/ccrystaltextview.cpp @@ -773,13 +773,23 @@ ExpandChars (LPCTSTR pszChars, int nOffset, int nCount, CString & line) return; } - int nTabSize = GetTabSize(); + const int nTabSize = GetTabSize (); + + // Calculate offset from begin of line + int nActualOffset = 0; + for (int i = 0; i < nOffset; i++) + { + if (pszChars[i] == _T ('\t')) + nActualOffset += (nTabSize - nActualOffset % nTabSize); + else + nActualOffset++; + } pszChars += nOffset; int nLength = nCount; int nTabCount = 0; - for (int i = 0; i < nLength; i++) + for (i = 0; i < nLength; i++) { if (pszChars[i] == _T('\t')) nTabCount++; @@ -794,7 +804,7 @@ ExpandChars (LPCTSTR pszChars, int nOffset, int nCount, CString & line) { if (pszChars[i] == _T('\t')) { - int nSpaces = nTabSize - nCurPos % nTabSize; + int nSpaces = nTabSize - (nActualOffset + nCurPos) % nTabSize; if (m_bViewTabs) { pszBuf[nCurPos++] = TAB_CHARACTER; diff --git a/Src/readme.txt b/Src/readme.txt index 04950e6df..f09b240e1 100644 --- a/Src/readme.txt +++ b/Src/readme.txt @@ -1,3 +1,8 @@ +2003-04-10 Kimmo + PATCH: [ 717688 ] CrystalEditor optimisations and memleaks + fix tab bug. + editlib: ccrystaltextview.cpp + 2003-04-09 Kimmo PATCH: [ 717688 ] CrystalEditor optimisations and memleaks editlib: ccrystaltextview.cpp