You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
See #2168 and #2169 for details, but the short version is that we should be more rigorous about saving-and-restoring error handlers and error handler metadata around libxml2 calls, in case any are being made recursively within Nokogiri.
For example, these lines in Nokogiri::HTML::Document::EncodingReader are calling HTML::SAX::PushParser to parse a chunk from the IO read callback of a regular document parse:
To allow users to do similarly complex things, we should always save-and-restore the error callbacks (which are the only global state I can think of that we regularly manipulate).
We're doing this in the HTML::SAX::PushParser class to cover ourselves in the aforementioned case:
This issue is opened to make sure we remember to do this everywhere.
It's somewhat related to wrapping we need to do around any libxml2 callbacks which re-enter the Ruby interpreter and how we handle those exceptions, all of which are detailed at #1610.
The text was updated successfully, but these errors were encountered:
See #2168 and #2169 for details, but the short version is that we should be more rigorous about saving-and-restoring error handlers and error handler metadata around libxml2 calls, in case any are being made recursively within Nokogiri.
For example, these lines in
Nokogiri::HTML::Document::EncodingReader
are calling HTML::SAX::PushParser to parse a chunk from the IO read callback of a regular document parse:nokogiri/lib/nokogiri/html/document.rb
Lines 275 to 277 in 7be6f04
To allow users to do similarly complex things, we should always save-and-restore the error callbacks (which are the only global state I can think of that we regularly manipulate).
We're doing this in the HTML::SAX::PushParser class to cover ourselves in the aforementioned case:
nokogiri/ext/nokogiri/html_sax_push_parser.c
Lines 24 to 28 in 7be6f04
nokogiri/ext/nokogiri/xml_syntax_error.h
Lines 6 to 17 in 7be6f04
nokogiri/ext/nokogiri/xml_syntax_error.c
Lines 3 to 24 in 7be6f04
This issue is opened to make sure we remember to do this everywhere.
It's somewhat related to wrapping we need to do around any libxml2 callbacks which re-enter the Ruby interpreter and how we handle those exceptions, all of which are detailed at #1610.
The text was updated successfully, but these errors were encountered: