Skip to content

Commit a5d4c46

Browse files
committed
Fix memory leak for merge_text_nodes
Recently introduced feature in lexbor backend did not free the data untill the parser instance is alive.
1 parent 1bcfb79 commit a5d4c46

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,6 @@ selectolax/lexbor.c
6868

6969
# virtual env
7070
.venv/
71-
venv/
71+
venv/
72+
73+
tmp/

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
- Fix incorrect default value in docstrings for strict argument
55
- Fix incorrect exception handling for `any_css_matches`
66
- Fix docstring for `css_first` method
7+
- Fix memory leak in `merge_text_nodes` for lexbor backend
78

89

910
## Version 0.3.34

selectolax/lexbor/node.pxi

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,10 @@ cdef class LexborNode:
518518
combined = (<bytes>left_text[:left_length]) + (<bytes>right_text[:right_length])
519519
lxb_dom_node_text_content_set(node, combined, len(combined))
520520
lxb_dom_node_remove(node.prev)
521+
522+
lxb_dom_document_destroy_text_noi(self.node.owner_document, left_text)
523+
lxb_dom_document_destroy_text_noi(self.node.owner_document, right_text)
524+
521525
if node.first_child:
522526
LexborNode.new(node, self.parser).merge_text_nodes()
523527
node = next_node

0 commit comments

Comments
 (0)