Skip to content

Commit 9cb78f7

Browse files
committed
Fix memory leak in fragment parser
1 parent 4c2ac37 commit 9cb78f7

File tree

2 files changed

+5
-0
lines changed

2 files changed

+5
-0
lines changed

selectolax/lexbor.pxd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ cdef class LexborCSSSelector:
268268

269269
cdef class LexborHTMLParser:
270270
cdef lxb_html_document_t *document
271+
cdef lxb_html_document_t *_original_document
271272
cdef bint _is_fragment
272273
cdef public bytes raw_html
273274
cdef LexborCSSSelector _selector

selectolax/lexbor.pyx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ cdef class LexborHTMLParser:
4848
cdef size_t html_len
4949
cdef object bytes_html
5050
self._is_fragment = is_fragment
51+
self._original_document = NULL
5152
self._selector = None
5253
self._new_html_document()
5354
bytes_html, html_len = preprocess_input(html)
@@ -174,6 +175,7 @@ cdef class LexborHTMLParser:
174175
return LXB_STATUS_ERROR
175176

176177
# Use the fragment document returned by lexbor as the parser document.
178+
self._original_document = self.document
177179
self.document = <lxb_html_document_t *> fragment_html_node
178180
return LXB_STATUS_OK
179181

@@ -191,6 +193,8 @@ cdef class LexborHTMLParser:
191193
"""
192194
if self.document != NULL:
193195
lxb_html_document_destroy(self.document)
196+
if self._original_document != NULL:
197+
lxb_html_document_destroy(self._original_document)
194198

195199
def __repr__(self):
196200
"""Return a concise representation of the parsed document.

0 commit comments

Comments
 (0)