Imported Upstream version 2.3.5
[platform/upstream/python-lxml.git] / src / lxml / apihelpers.pxi
index 6491d16..13ab0f8 100644 (file)
@@ -1026,9 +1026,7 @@ cdef void _moveTail(xmlNode* c_tail, xmlNode* c_target):
     c_tail = _textNodeOrSkip(c_tail)
     while c_tail is not NULL:
         c_next = _textNodeOrSkip(c_tail.next)
-        tree.xmlUnlinkNode(c_tail)
-        tree.xmlAddNextSibling(c_target, c_tail)
-        c_target = c_tail
+        c_target = tree.xmlAddNextSibling(c_target, c_tail)
         c_tail = c_next
 
 cdef int _copyTail(xmlNode* c_tail, xmlNode* c_target) except -1:
@@ -1043,8 +1041,7 @@ cdef int _copyTail(xmlNode* c_tail, xmlNode* c_target) except -1:
             c_new_tail = tree.xmlCopyNode(c_tail, 0)
         if c_new_tail is NULL:
             python.PyErr_NoMemory()
-        tree.xmlAddNextSibling(c_target, c_new_tail)
-        c_target = c_new_tail
+        c_target = tree.xmlAddNextSibling(c_target, c_new_tail)
         c_tail = _textNodeOrSkip(c_tail.next)
     return 0
 
@@ -1323,6 +1320,12 @@ cdef int check_string_utf8(bytes pystring):
         s += 1
     return is_non_ascii
 
+cdef inline object funicodeOrNone(char* s):
+    return funicode(s) if s is not NULL else None
+
+cdef inline object funicodeOrEmpty(char* s):
+    return funicode(s) if s is not NULL else ''
+
 cdef object funicode(char* s):
     cdef Py_ssize_t slen
     cdef char* spos