[Lxml-checkins] r47330 - lxml/trunk/src/lxml

scoder at codespeak.net scoder at codespeak.net
Tue Oct 9 12:02:21 CEST 2007


Author: scoder
Date: Tue Oct  9 12:02:20 2007
New Revision: 47330

Modified:
   lxml/trunk/src/lxml/etree.pyx
Log:
keep prefix counter a C integer, change formatting string instead

Modified: lxml/trunk/src/lxml/etree.pyx
==============================================================================
--- lxml/trunk/src/lxml/etree.pyx	(original)
+++ lxml/trunk/src/lxml/etree.pyx	Tue Oct  9 12:02:20 2007
@@ -229,7 +229,8 @@
     When instances of this class are garbage collected, the libxml
     document is cleaned up.
     """
-    cdef object _ns_counter
+    cdef unsigned int _ns_counter
+    cdef object _prefix_format
     cdef xmlDoc* _c_doc
     cdef _BaseParser _parser
     
@@ -295,8 +296,12 @@
             return self._c_doc.URL
 
     cdef buildNewPrefix(self):
-        ns = "ns%d" % self._ns_counter
+        ns = python.PyString_FromFormat(
+            _cstr(self._prefix_format), self._ns_counter)
         self._ns_counter = self._ns_counter + 1
+        if self._ns_counter == 0:
+            # overflow!
+            self._prefix_format = self._prefix_format + "A"
         return ns
 
     cdef xmlNs* _findOrBuildNodeNs(self, xmlNode* c_node,
@@ -374,7 +379,8 @@
     cdef _Document result
     result = NEW_DOCUMENT(_Document)
     result._c_doc = c_doc
-    result._ns_counter = 0L
+    result._ns_counter = 0
+    result._prefix_format = "ns%lu"
     if parser is None:
         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
     result._parser = parser


More information about the lxml-checkins mailing list