[Ttssh2-commit] [5410] OSC文字列用バッファの最大値を設定できるようにした。

Back to archive index

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"



Ttssh2-commit メーリングリストの案内
Back to archive index