summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorhobbs <hobbs>2003-02-18 19:18:29 (GMT)
committerhobbs <hobbs>2003-02-18 19:18:29 (GMT)
commitda62f4fcaba648ecdce3d645f9978c0cbc421a15 (patch)
tree1b39a95ac9ff5c18fe6f113c3838b3d27bf13536 /win
parent48c6f9e7bf8a28db1bce010937cec196ae55fc80 (diff)
downloadtk-da62f4fcaba648ecdce3d645f9978c0cbc421a15.zip
tk-da62f4fcaba648ecdce3d645f9978c0cbc421a15.tar.gz
tk-da62f4fcaba648ecdce3d645f9978c0cbc421a15.tar.bz2
* win/tkWinInit.c (TkpDisplayWarning): truncate MessageBox string
to 1024 chars to prevent possible oversized window errors. May be necessary in other MB uses (ie Tcl_AppInit). [Tcl Bug #608559]
Diffstat (limited to 'win')
-rw-r--r--win/tkWinInit.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/win/tkWinInit.c b/win/tkWinInit.c
index 1ec2642..bdedb2b 100644
--- a/win/tkWinInit.c
+++ b/win/tkWinInit.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinInit.c,v 1.10 2002/12/08 00:46:51 hobbs Exp $
+ * RCS: @(#) $Id: tkWinInit.c,v 1.11 2003/02/18 19:18:33 hobbs Exp $
*/
#include "tkWinInt.h"
@@ -126,8 +126,17 @@ TkpDisplayWarning(msg, title)
Tcl_DString msgString, titleString;
Tcl_Encoding unicodeEncoding = TkWinGetUnicodeEncoding();
+ /*
+ * Truncate MessageBox string if it is too long to not overflow
+ * the screen and cause possible oversized window error.
+ */
+#define TK_MAX_WARN_LEN (1024 * sizeof(WCHAR))
Tcl_UtfToExternalDString(unicodeEncoding, msg, -1, &msgString);
Tcl_UtfToExternalDString(unicodeEncoding, title, -1, &titleString);
+ if (Tcl_DStringLength(&msgString) > TK_MAX_WARN_LEN) {
+ Tcl_DStringSetLength(&msgString, TK_MAX_WARN_LEN);
+ Tcl_DStringAppend(&msgString, (char *) L" ...", 4 * sizeof(WCHAR));
+ }
MessageBoxW(NULL, (WCHAR *) Tcl_DStringValue(&msgString),
(WCHAR *) Tcl_DStringValue(&titleString),
MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL