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
>
>

Reply via email to