[Winmerge-svn] SF.net SVN: winmerge:[7490] branches/R2_14/Src/DiffTextBuffer.cpp
Windows visual diff and merge for files and directories
Brought to you by:
christianlist,
grimmdp
From: <ge...@us...> - 2010-12-31 12:53:53
|
Revision: 7490 http://winmerge.svn.sourceforge.net/winmerge/?rev=7490&view=rev Author: gerundt Date: 2010-12-31 12:53:47 +0000 (Fri, 31 Dec 2010) Log Message: ----------- BUG: [ 2774677 ] Large Files crash WinMerge... Limit linebuffer growth speed. Modified Paths: -------------- branches/R2_14/Src/DiffTextBuffer.cpp Modified: branches/R2_14/Src/DiffTextBuffer.cpp =================================================================== --- branches/R2_14/Src/DiffTextBuffer.cpp 2010-12-31 11:55:48 UTC (rev 7489) +++ branches/R2_14/Src/DiffTextBuffer.cpp 2010-12-31 12:53:47 UTC (rev 7490) @@ -405,10 +405,16 @@ break; // but if last line had eol, we add an extra (empty) line to buffer - // Manually grow line array exponentially + // Grow line array if (lineno == arraysize) { - arraysize *= 2; + // For smaller sizes use exponential growth, but for larger + // sizes grow by constant ratio. Unlimited exponential growth + // easily runs out of memory. + if (arraysize < 100 * 1024) + arraysize *= 2; + else + arraysize += 100 * 1024; m_aLines.SetSize(arraysize); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |