Right, indeed negative int64 numbers are not properly handled. Also
looks like this happened in the past with int which was patched but not
trickled into int64 handling. As I look at it, the fromNumber stuff
looks like it may help from a refactor but I'll not go there just now.
A patch to handle negative numbers in estring.cpp (be careful of
formatting changes in email):
--- estring-orig 2016-09-16 15:30:53.719083773 -0400
+++ estring-patched 2016-09-19 13:06:48.826113327 -0400
@@ -947,7 +947,15 @@
EString EString::fromNumber( int64 n, uint base )
{
EString r;
- r.appendNumber( n, base );
+ if (0 == n) {
+ r.append("0"); // Short-circuit, 0 is 0 in any base, no
need for extra processing
+ } else {
+ if (n < 0) {
+ n = -n; // Negate, otherwise negative numbers get
messed up
+ r.append("-"); // But we remember we need a - sign
+ }
+ r.appendNumber( n, base );
+ }
return r;
}
Next bit is to see why modseq is -1 at all, but if you can try with this
patch, I think you may end up with a more benign situation (but possible
big table updates with modseq>-1). It is possible -1 is valid but Arnt
is the one to confirm there. It's also possible something to do with
your mail client/setup.
Jim
On 19/09/2016 17:46, NSS Ltd wrote:
> OK, I can now reproduce the output 'V' from fn. -1 throws it off. I'll
> dig around (the estring entries were supposed to track the stack on it,
> but I have a test harness I can use from here).
>
> I'll report back.
>
> Arnt, any idea why the modseq value becomes -1 ? Hints will same me
> time tracking it.
>
> Thanks
> Jim
>
>