/*
* call-seq:
* read
*
* Move the Reader forward through the XML document.
*/
static VALUE read_more(VALUE self)
{
xmlTextReaderPtr reader;
Data_Get_Struct(self, xmlTextReader, reader);
VALUE error_list = rb_funcall(self, rb_intern("errors"), 0);
xmlSetStructuredErrorFunc((void *)error_list, Nokogiri_error_array_pusher);
int ret = xmlTextReaderRead(reader);
xmlSetStructuredErrorFunc(NULL, NULL);
if(ret == 1) return self;
if(ret == 0) return Qnil;
xmlErrorPtr error = xmlGetLastError();
if(error)
rb_funcall(rb_mKernel, rb_intern("raise"), 1,
Nokogiri_wrap_xml_syntax_error((VALUE)NULL, error)
);
else
rb_raise(rb_eRuntimeError, "Error pulling: %d", ret);
return Qnil;
}