Hallvard B Furuseth wrote:
I wrote:
It makes more sense to check for ridiculous-sized numbers before parsing them and just output a min/max value depending on sign. (Or right-truncate e.g. n*12 digits and add n*5 to the length.)
Committed. Chopping n*7 digits and adding n*3 to the binary-integer length instead. More wasteful of the exponent bits, but leaves fewer digits to parse.
Could possibly chop just as many digits as needed and compute the length more exactly, but I wasn't up to figuring out what algorithm to use so an exponent taken from the parsed digits could add to overlap an exponent taken from chopping. Will fiddle a bit with it now and see if I come up with something.
One detail: Looks like lutil_str2bin() could use a ctx parameter, for the temporary malloc/free in that function.
Good idea. I'll add that.
This change was unnecessary: @@ -2114,49 +2116,69 @@
static int integerVal2Key( - struct berval *val, + struct berval val, struct berval *key, - struct berval *tmp + struct berval itmp ) {
Passing structures by value may be perfectly legal now, but we never do it in this source base. Why start now?