Index: generic/nsf.c =================================================================== diff -u -r4563271bbe9742d74ba021fa8f23caa9274d1649 -r8325cbadb4b6591c9db08a5643d9252b62badf9b --- generic/nsf.c (.../nsf.c) (revision 4563271bbe9742d74ba021fa8f23caa9274d1649) +++ generic/nsf.c (.../nsf.c) (revision 8325cbadb4b6591c9db08a5643d9252b62badf9b) @@ -26838,17 +26838,16 @@ Tcl_ListObjAppendElement(interp, resultObj, Tcl_NewStringObj("hex", -1)); if (obj->bytes != NULL) { -#define CAPPEDSIZE 10u - const char trailerStr[] = "..."; -#define BUFSIZE (CAPPEDSIZE*2u + sizeof(trailerStr)) - int i; - char buffer[BUFSIZE]; + const size_t nrBytes = 10; + size_t i, objLength = (size_t)obj->length; + char trailer[3] = "..."; + char buffer[nrBytes*2u + sizeof(trailer) + 1u]; - for (i = 0; i < CAPPEDSIZE && i < obj->length; i++) { - snprintf(buffer + i*2, BUFSIZE - (i+1)*2, "%.2x", (unsigned)(*((obj->bytes)+i) & 0xff)); + for (i = 0; i < nrBytes && i < objLength; i++) { + snprintf(buffer + i*2, sizeof(buffer) - (i+1)*2, "%.2x", (unsigned)(*((obj->bytes)+i) & 0xff)); } - if (obj->length > CAPPEDSIZE) { - strncat(buffer, trailerStr, (BUFSIZE-CAPPEDSIZE*2u)); + if (objLength > nrBytes) { + strncat(buffer, trailer, sizeof(buffer) - strlen(buffer) - 1); } Tcl_ListObjAppendElement(interp, resultObj, Tcl_NewStringObj(buffer, -1));