The / operation in Python 2 is "floor division" for int/long types
while in Python 3 is "true division". This means that the
significand can become a float with the existing code in Python 3.
This, in turn, can result in a parse of something like [1.10e1]
returning 11 in Python 2 and 11.0 in Python 3. Switching to the
// operator resolves this difference.
The JSON tests do not catch this difference because the built-in
serializer prints floats with the %.15g format which will convert
floats with no fractional part to an integer representation.
---
python/ovs/json.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/python/ovs/json.py b/python/ovs/json.py
index 42e697d..ff986ea 100644
--- a/python/ovs/json.py
+++ b/python/ovs/json.py
@@ -280,7 +280,7 @@ class Parser(object):
significand *= 10
pow10 -= 1
while pow10 < 0 and significand % 10 == 0:
- significand /= 10
+ significand //= 10
pow10 += 1
if (pow10 == 0 and
((not sign and significand < 2 ** 63) or
--
1.8.3.1
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev