OSDN Git Service

PATCH: [ 2043420 ] Optimize applying line filters
authorKimmo Varis <kimmov@gmail.com>
Sat, 9 Aug 2008 15:25:23 +0000 (15:25 +0000)
committerKimmo Varis <kimmov@gmail.com>
Sat, 9 Aug 2008 15:25:23 +0000 (15:25 +0000)
Src/DiffWrapper.cpp

index 73d72b5..588e40b 100644 (file)
@@ -1062,17 +1062,18 @@ bool CDiffWrapper::RegExpFilter(int StartPos, int EndPos, int FileNo)
 
        while (line <= EndPos && linesMatch == true)
        {
-               std::string LineData(files[FileNo].linbuf[line]);
-               size_t EolPos = LineData.find_first_of(EolIndicators);
-               if (EolPos != std::string::npos)
+               char * linedata = strdup(files[FileNo].linbuf[line]);
+               int eolpos = strcspn(linedata, EolIndicators);
+               if (eolpos != strlen(linedata))
                {
-                       LineData.erase(EolPos);
+                       linedata[eolpos] = '\0';
                }
 
-               if (!m_pFilterList->Match(LineData.c_str(), m_codepage))
+               if (!m_pFilterList->Match(linedata, m_codepage))
                {
                        linesMatch = false;
                }
+               free(linedata);
                ++line;
        }
        return linesMatch;