my_atof3() Fix uncommon bug where it wrongly fails
authorKarl Williamson <khw@cpan.org>
Fri, 18 Jan 2019 18:30:00 +0000 (11:30 -0700)
committerKarl Williamson <khw@cpan.org>
Sat, 19 Jan 2019 04:48:16 +0000 (21:48 -0700)
commitaac39b038830b7472ba3f079b4aee72cb2076c2e
tree9925a0eb6af94e85d0340277adf3df64ddc66309
parent0657084328c6c5c8225ddf2ce8238561011f6bff
my_atof3() Fix uncommon bug where it wrongly fails

This bug showed up only on -Dusemymalloc without Debugging, and without
various other common Configure options.

It causes my_atof3() to return failure where in fact success was
achieved.  It apparently got triggered due to slight differences in
malloc behaviors.

The bug is that it changed a string pointer to new memory and forgot to
change it back to the original value when that memory got freed.  The
test that fails is an equal/not equal of two pointers, and usually two
pointers aren't the same, meaning the bug doesn't appear.

The only case where my_atof3() is called is in parsing certain
\p{nv=...} where "..." is not a rational number.  So the scope of this
bug is limited.

Spotted by Ryan Voots.
numeric.c