factor: fix integer validation and GMP fallback
commit024a1d572c01db2e12a86cd893d98518c73e51d1
authorPádraig Brady <P@draigBrady.com>
Mon, 8 Oct 2012 14:48:43 +0000 (8 15:48 +0100)
committerPádraig Brady <P@draigBrady.com>
Mon, 8 Oct 2012 23:07:35 +0000 (9 00:07 +0100)
tree815f2cc8d0258270310241ddcb43c1bf8198a98b
parentcf9cd8958bbf294c30b82c2d5e9ea64ef14f37b9
factor: fix integer validation and GMP fallback

In the recent factor rewrite, the GMP code
wasn't actually used; just an error was printed
on integer overflow.  While fixing that it was noticed
that correct input validation wasn't done in all cases
when falling back to the GMP code.

* src/factor.c (print_factors) Fallback to GMP on overflow.
(strto2uintmax): Scan the string for invalid characters,
so that case can be detected independently of overflow.
Return an error when an empty string is passed.
Also allow leading spaces and '+' in input numbers.
* tests/misc/factor.pl: Ensure the GMP code is exercised
when compiled in. Also add a test to verify leading
spaces and '+' are allowed.
src/factor.c
tests/misc/factor.pl