mirror of
https://github.com/golang/go
synced 2024-09-29 18:24:29 -06:00
math/big: don't force second arg to Jacobi and Int.ModSqrt to escape
This CL updates big.Jacobi to avoid forcing its y argument to escape to the heap. The argument was escaping because it was being passed through an empty interface to fmt.Sprintf during an assertion failure. As a result, callers of Jacobi and Int.ModSqrt (which calls Jacobi) could not keep this value on the stack. Noticed when working on https://github.com/cockroachdb/apd/pull/103.
This commit is contained in:
parent
2639f2f79b
commit
3ee07b5dc3
@ -837,7 +837,7 @@ func (z *Int) ModInverse(g, n *Int) *Int {
|
|||||||
// The y argument must be an odd integer.
|
// The y argument must be an odd integer.
|
||||||
func Jacobi(x, y *Int) int {
|
func Jacobi(x, y *Int) int {
|
||||||
if len(y.abs) == 0 || y.abs[0]&1 == 0 {
|
if len(y.abs) == 0 || y.abs[0]&1 == 0 {
|
||||||
panic(fmt.Sprintf("big: invalid 2nd argument to Int.Jacobi: need odd integer but got %s", y))
|
panic(fmt.Sprintf("big: invalid 2nd argument to Int.Jacobi: need odd integer but got %s", y.String()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// We use the formulation described in chapter 2, section 2.4,
|
// We use the formulation described in chapter 2, section 2.4,
|
||||||
|
Loading…
Reference in New Issue
Block a user