summaryrefslogtreecommitdiffstats
path: root/generic/tclStringRep.h
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2020-09-10 10:28:46 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2020-09-10 10:28:46 (GMT)
commit2592b1e93b713440a2fab51b01df4ad31bb21f7d (patch)
treefa223819af815d3047fa4aae68da0bf138ab2406 /generic/tclStringRep.h
parentf4d0f6366c3f05177907320d459e4df57a3bbe04 (diff)
downloadtcl-2592b1e93b713440a2fab51b01df4ad31bb21f7d.zip
tcl-2592b1e93b713440a2fab51b01df4ad31bb21f7d.tar.gz
tcl-2592b1e93b713440a2fab51b01df4ad31bb21f7d.tar.bz2
Don't use sizeof() for structs containing a flexible array as last element. Lesson from [https://core.tcl-lang.org/tk/info/3bc0f44ef3|3bc0f44ef3]. Use TclOffset in stead.
Diffstat (limited to 'generic/tclStringRep.h')
-rw-r--r--generic/tclStringRep.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/generic/tclStringRep.h b/generic/tclStringRep.h
index 227e6bc..6d179ba 100644
--- a/generic/tclStringRep.h
+++ b/generic/tclStringRep.h
@@ -65,9 +65,9 @@ typedef struct String {
} String;
#define STRING_MAXCHARS \
- (int)(((size_t)UINT_MAX - sizeof(String))/sizeof(Tcl_UniChar))
+ (int)(((size_t)UINT_MAX - 1 - TclOffset(String, unicode))/sizeof(Tcl_UniChar))
#define STRING_SIZE(numChars) \
- (sizeof(String) + ((numChars) * sizeof(Tcl_UniChar)))
+ (TclOffset(String, unicode) + ((numChars + 1) * sizeof(Tcl_UniChar)))
#define stringCheckLimits(numChars) \
do { \
if ((numChars) < 0 || (numChars) > STRING_MAXCHARS) { \