[Lxml-checkins] r47592 - lxml/branch/lxml-1.3/src/lxml

scoder at codespeak.net scoder at codespeak.net
Fri Oct 19 16:45:14 CEST 2007


Author: scoder
Date: Fri Oct 19 16:45:13 2007
New Revision: 47592

Modified:
   lxml/branch/lxml-1.3/src/lxml/etree.pyx
Log:
fix prefix name creation also for Python <= 2.4

Modified: lxml/branch/lxml-1.3/src/lxml/etree.pyx
==============================================================================
--- lxml/branch/lxml-1.3/src/lxml/etree.pyx	(original)
+++ lxml/branch/lxml-1.3/src/lxml/etree.pyx	Fri Oct 19 16:45:13 2007
@@ -231,8 +231,8 @@
     When instances of this class are garbage collected, the libxml
     document is cleaned up.
     """
-    cdef unsigned int _ns_counter
-    cdef object _prefix_format
+    cdef int _ns_counter
+    cdef object _prefix_tail
     cdef xmlDoc* _c_doc
     cdef _BaseParser _parser
     
@@ -298,12 +298,17 @@
             return self._c_doc.URL
 
     cdef buildNewPrefix(self):
-        ns = python.PyString_FromFormat(
-            _cstr(self._prefix_format), self._ns_counter)
+        ns = python.PyString_FromFormat("ns%d", self._ns_counter)
+        if self._prefix_tail is not None:
+            ns = ns + self._prefix_tail
         self._ns_counter = self._ns_counter + 1
-        if self._ns_counter == 0:
+        if self._ns_counter < 0:
             # overflow!
-            self._prefix_format = self._prefix_format + "A"
+            self._ns_counter = 0
+            if self._prefix_tail is None:
+                self._prefix_tail = "A"
+            else:
+                self._prefix_tail = self._prefix_tail + "A"
         return ns
 
     cdef xmlNs* _findOrBuildNodeNs(self, xmlNode* c_node,
@@ -378,7 +383,7 @@
     result = _Document()
     result._c_doc = c_doc
     result._ns_counter = 0
-    result._prefix_format = "ns%lu"
+    result._prefix_tail = None
     if parser is None:
         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
     result._parser = parser


More information about the lxml-checkins mailing list