summaryrefslogtreecommitdiffstats
path: root/generic/tclBinary.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2020-09-11 12:31:48 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2020-09-11 12:31:48 (GMT)
commit7f62b768876fc8b0779d10ae3fcba1fc7aeaba04 (patch)
treecc67956829bcf5ad5af0e714d5184b80475d25ce /generic/tclBinary.c
parent0715d88019e40aa514b3b2d3ba691ab7d0a96eb2 (diff)
downloadtcl-7f62b768876fc8b0779d10ae3fcba1fc7aeaba04.zip
tcl-7f62b768876fc8b0779d10ae3fcba1fc7aeaba04.tar.gz
tcl-7f62b768876fc8b0779d10ae3fcba1fc7aeaba04.tar.bz2
Fix [https://core.tcl-lang.org/tk/tktview?name=3bc0f44ef3|3bc0f44ef3]: UBSan complains about body.chars[] usage.
(Yes, I know, this one is for Tk, but Tcl was using the same construct too ....)
Diffstat (limited to 'generic/tclBinary.c')
-rw-r--r--generic/tclBinary.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/generic/tclBinary.c b/generic/tclBinary.c
index f66aff7..78cdd42 100644
--- a/generic/tclBinary.c
+++ b/generic/tclBinary.c
@@ -199,7 +199,7 @@ typedef struct ByteArray {
* array. */
int allocated; /* The amount of space actually allocated
* minus 1 byte. */
- unsigned char bytes[1]; /* The array of bytes. The actual size of this
+ unsigned char bytes[TCLFLEXARRAY]; /* The array of bytes. The actual size of this
* field depends on the 'allocated' field
* above. */
} ByteArray;
@@ -334,7 +334,7 @@ Tcl_SetByteArrayObj(
if (length < 0) {
length = 0;
}
- byteArrayPtr = ckalloc(BYTEARRAY_SIZE(length));
+ byteArrayPtr = (ByteArray *)ckalloc(BYTEARRAY_SIZE(length));
byteArrayPtr->used = length;
byteArrayPtr->allocated = length;
@@ -460,7 +460,7 @@ SetByteArrayFromAny(
src = TclGetStringFromObj(objPtr, &length);
srcEnd = src + length;
- byteArrayPtr = ckalloc(BYTEARRAY_SIZE(length));
+ byteArrayPtr = (ByteArray *)ckalloc(BYTEARRAY_SIZE(length));
for (dst = byteArrayPtr->bytes; src < srcEnd; ) {
src += TclUtfToUniChar(src, &ch);
*dst++ = UCHAR(ch);
@@ -529,7 +529,7 @@ DupByteArrayInternalRep(
srcArrayPtr = GET_BYTEARRAY(srcPtr);
length = srcArrayPtr->used;
- copyArrayPtr = ckalloc(BYTEARRAY_SIZE(length));
+ copyArrayPtr = (ByteArray *)ckalloc(BYTEARRAY_SIZE(length));
copyArrayPtr->used = length;
copyArrayPtr->allocated = length;
memcpy(copyArrayPtr->bytes, srcArrayPtr->bytes, length);
@@ -588,7 +588,7 @@ UpdateStringOfByteArray(
Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX);
}
- dst = ckalloc(size + 1);
+ dst = (char *)ckalloc(size + 1);
objPtr->bytes = dst;
objPtr->length = size;