1
0
mirror of https://github.com/golang/go synced 2024-11-12 03:50:21 -07:00

math/big: avoid panic in float.Text with negative prec

Fixes #15918

Change-Id: I4b434aed262960a2e6c659d4c2296fbf662c3a52
Reviewed-on: https://go-review.googlesource.com/23633
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Alberto Donizetti 2016-06-01 19:16:56 +02:00 committed by Robert Griesemer
parent 77026ef902
commit 5db44c17a2
2 changed files with 10 additions and 2 deletions

View File

@ -290,6 +290,11 @@ func TestFloat64Text(t *testing.T) {
// Issue 2625. // Issue 2625.
{383260575764816448, 'f', 0, "383260575764816448"}, {383260575764816448, 'f', 0, "383260575764816448"},
{383260575764816448, 'g', -1, "3.8326057576481645e+17"}, {383260575764816448, 'g', -1, "3.8326057576481645e+17"},
// Issue 15918.
{1, 'f', -10, "1"},
{1, 'f', -11, "1"},
{1, 'f', -12, "1"},
} { } {
// The test cases are from the strconv package which tests float64 values. // The test cases are from the strconv package which tests float64 values.
// When formatting values with prec = -1 (shortest representation), // When formatting values with prec = -1 (shortest representation),

View File

@ -41,8 +41,11 @@ import (
// x.Prec() mantissa bits. // x.Prec() mantissa bits.
// The prec value is ignored for the 'b' or 'p' format. // The prec value is ignored for the 'b' or 'p' format.
func (x *Float) Text(format byte, prec int) string { func (x *Float) Text(format byte, prec int) string {
const extra = 10 // TODO(gri) determine a good/better value here cap := 10 // TODO(gri) determine a good/better value here
return string(x.Append(make([]byte, 0, prec+extra), format, prec)) if prec > 0 {
cap += prec
}
return string(x.Append(make([]byte, 0, cap), format, prec))
} }
// String formats x like x.Text('g', 10). // String formats x like x.Text('g', 10).