svnno****@sourc*****
svnno****@sourc*****
2013年 10月 31日 (木) 19:27:07 JST
Revision: 5410 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5410 Author: doda Date: 2013-10-31 19:27:07 +0900 (Thu, 31 Oct 2013) Log Message: ----------- OSC文字列用バッファの最大値を設定できるようにした。 Modified Paths: -------------- trunk/installer/release/TERATERM.INI trunk/teraterm/common/tttypes.h trunk/teraterm/teraterm/vtterm.c trunk/teraterm/ttpset/ttset.c -------------- next part -------------- Modified: trunk/installer/release/TERATERM.INI =================================================================== --- trunk/installer/release/TERATERM.INI 2013-10-28 13:14:43 UTC (rev 5409) +++ trunk/installer/release/TERATERM.INI 2013-10-31 10:27:07 UTC (rev 5410) @@ -520,6 +520,9 @@ ; Max serial port number MaxComPort=256 +; Max buffer size of OSC string +MaxOSCBufferSize=4096 + ; Mouse event tracking MouseEventTracking=on Modified: trunk/teraterm/common/tttypes.h =================================================================== --- trunk/teraterm/common/tttypes.h 2013-10-28 13:14:43 UTC (rev 5409) +++ trunk/teraterm/common/tttypes.h 2013-10-31 10:27:07 UTC (rev 5410) @@ -570,6 +570,7 @@ DWORD BeepOverUsedTime; DWORD BeepSuppressTime; WORD LogAllBuffIncludedInFirst; + int MaxOSCBufferSize; }; typedef struct tttset TTTSet, *PTTSet; @@ -1035,6 +1036,7 @@ * * - At version 4.80, ttset_memfilemap was replaced with ttset_memfilemap_22. * added tttset.LogAllBuffIncludedInFirst + * added tttset.MaxOSCBufferSize * * - At version 4.79, ttset_memfilemap was replaced with ttset_memfilemap_21. * added TMap.WinUndoFlag Modified: trunk/teraterm/teraterm/vtterm.c =================================================================== --- trunk/teraterm/teraterm/vtterm.c 2013-10-28 13:14:43 UTC (rev 5409) +++ trunk/teraterm/teraterm/vtterm.c 2013-10-31 10:27:07 UTC (rev 5410) @@ -168,7 +168,6 @@ static DWORD BeepOverUsedCount = 0; /* OSC String buffer */ -#define MAXOSCBUFFSIZE 4096 static char *OSCStrBuff; static unsigned int OSCStrBuffSize; @@ -4353,17 +4352,21 @@ XsParseMode = ModeXsColorSpec; break; case 52: - if ((ts.CtrlFlag & CSF_CBRW) == 0) { + if ((ts.CtrlFlag & CSF_CBRW) == 0 || ts.MaxOSCBufferSize == 0) { XsParseMode = ModeXsIgnore; break; } if (OSCStrBuff == NULL) { - OSCStrBuff = malloc(sizeof(ts.Title)); + new_size = sizeof(ts.Title); + if (new_size > ts.MaxOSCBufferSize) { + new_size = ts.MaxOSCBufferSize; + } + OSCStrBuff = malloc(new_size); if (OSCStrBuff == NULL) { XsParseMode = ModeXsIgnore; break; } - OSCStrBuffSize = sizeof(ts.Title); + OSCStrBuffSize = new_size; } XsParseMode = ModeXsString; break; @@ -4424,10 +4427,10 @@ if (StrLen < OSCStrBuffSize - 1) { OSCStrBuff[StrLen++] = b; } - else if (!realloc_failed && OSCStrBuffSize < MAXOSCBUFFSIZE) { + else if (!realloc_failed && OSCStrBuffSize < ts.MaxOSCBufferSize) { new_size = OSCStrBuffSize * 2; - if (new_size > MAXOSCBUFFSIZE) { - new_size = MAXOSCBUFFSIZE; + if (new_size > ts.MaxOSCBufferSize) { + new_size = ts.MaxOSCBufferSize; } p = realloc(OSCStrBuff, new_size); Modified: trunk/teraterm/ttpset/ttset.c =================================================================== --- trunk/teraterm/ttpset/ttset.c 2013-10-28 13:14:43 UTC (rev 5409) +++ trunk/teraterm/ttpset/ttset.c 2013-10-31 10:27:07 UTC (rev 5410) @@ -1525,6 +1525,10 @@ GetPrivateProfileInt(Section, "BeepOverUsedTime", 2, FName); ts->BeepSuppressTime = GetPrivateProfileInt(Section, "BeepSuppressTime", 5, FName); + + // Max OSC string buffer size + ts->MaxOSCBufferSize = + GetPrivateProfileInt(Section, "MaxOSCBufferSize", 4096, FName); } void FAR PASCAL WriteIniFile(PCHAR FName, PTTSet ts) @@ -2683,6 +2687,9 @@ WriteInt(Section, "BeepOverUsedCount", FName, ts->BeepOverUsedCount); WriteInt(Section, "BeepOverUsedTime", FName, ts->BeepOverUsedTime); WriteInt(Section, "BeepSuppressTime", FName, ts->BeepSuppressTime); + + // Max OSC string buffer size + WriteInt(Section, "MaxOSCBufferSize", FName, ts->MaxOSCBufferSize); } #define VTEditor "VT editor keypad"