apparently id() sometimes generate negative values and %X outputs -XXXX

* python/generator.py python/libxml.py: apparently id() sometimes
  generate negative values and %X outputs -XXXX :-(
Daniel
diff --git a/python/generator.py b/python/generator.py
index f116f8a..a38a23c 100755
--- a/python/generator.py
+++ b/python/generator.py
@@ -1055,7 +1055,7 @@
 		   classes_ancestor[classname] == "xmlNode":
 		    classes.write("    def __repr__(self):\n")
 		    format = "<%s (%%s) object at 0x%%x>" % (classname)
-		    classes.write("        return \"%s\" %% (self.name, long(id (self)))\n\n" % (
+		    classes.write("        return \"%s\" %% (self.name, long(pos_id (self)))\n\n" % (
 				  format))
 	    else:
 		txt.write("Class %s()\n" % (classname))
diff --git a/python/libxml.py b/python/libxml.py
index 4c9fe92..988a166 100644
--- a/python/libxml.py
+++ b/python/libxml.py
@@ -1,10 +1,20 @@
 import libxml2mod
 import types
+import sys
 
 # The root of all libxml2 errors.
 class libxmlError(Exception): pass
 
 #
+# id() is sometimes negative ...
+#
+def pos_id(o):
+    i = id(o)
+    if (i < 0):
+        return (sys.maxint - i)
+    return i
+
+#
 # Errors raised by the wrappers when some tree handling failed.
 #
 class treeError(libxmlError):