diff options
author | dgp@users.sourceforge.net <dgp> | 2014-10-30 15:26:42 (GMT) |
---|---|---|
committer | dgp@users.sourceforge.net <dgp> | 2014-10-30 15:26:42 (GMT) |
commit | 84ef3176c3d1081b26379e7c3c4c6f402859f171 (patch) | |
tree | c02cfebbe3bcc52d1170176fc41c1f6b977ed2ac /generic/tkScale.c | |
parent | fb46243282c17ff4d354a2821fe7ed9c3cac304a (diff) | |
parent | 031ee5ae6f2870c541a5f386ee540feff64bb9e6 (diff) | |
download | tk-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.c | 7 |
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; |