summaryrefslogtreecommitdiffstats
path: root/generic/tkScale.c
diff options
context:
space:
mode:
authordgp@users.sourceforge.net <dgp>2014-10-30 15:26:42 (GMT)
committerdgp@users.sourceforge.net <dgp>2014-10-30 15:26:42 (GMT)
commit84ef3176c3d1081b26379e7c3c4c6f402859f171 (patch)
treec02cfebbe3bcc52d1170176fc41c1f6b977ed2ac /generic/tkScale.c
parentfb46243282c17ff4d354a2821fe7ed9c3cac304a (diff)
parent031ee5ae6f2870c541a5f386ee540feff64bb9e6 (diff)
downloadtk-84ef3176c3d1081b26379e7c3c4c6f402859f171.zip
tk-84ef3176c3d1081b26379e7c3c4c6f402859f171.tar.gz
tk-84ef3176c3d1081b26379e7c3c4c6f402859f171.tar.bz2
[3417012] Stop [scale] segfault when -digits too big. Thanks fvogel.
Diffstat (limited to 'generic/tkScale.c')
-rw-r--r--generic/tkScale.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/generic/tkScale.c b/generic/tkScale.c
index 7d72990..cc7c294 100644
--- a/generic/tkScale.c
+++ b/generic/tkScale.c
@@ -800,6 +800,9 @@ ComputeFormat(
*/
numDigits = scalePtr->digits;
+ if (numDigits > TCL_MAX_PREC) {
+ numDigits = 0;
+ }
if (numDigits <= 0) {
if (scalePtr->resolution > 0) {
/*
@@ -880,7 +883,7 @@ static void
ComputeScaleGeometry(
register TkScale *scalePtr) /* Information about widget. */
{
- char valueString[PRINT_CHARS];
+ char valueString[TCL_DOUBLE_SPACE];
int tmp, valuePixels, x, y, extraSpace;
Tk_FontMetrics fm;
@@ -1296,7 +1299,7 @@ ScaleSetVariable(
register TkScale *scalePtr) /* Info about widget. */
{
if (scalePtr->varNamePtr != NULL) {
- char string[PRINT_CHARS];
+ char string[TCL_DOUBLE_SPACE];
sprintf(string, scalePtr->format, scalePtr->value);
scalePtr->flags |= SETTING_VAR;