diff -ur org/ext/libxml/ruby_xml_error.c mod/ext/libxml/ruby_xml_error.c --- org/ext/libxml/ruby_xml_error.c 2008-11-19 19:58:02.000000000 +0200 +++ mod/ext/libxml/ruby_xml_error.c 2008-11-21 23:40:18.000000000 +0200 @@ -55,7 +55,11 @@ /* Embed the block within the Error class to avoid it to be collected. Previous handler will be overwritten if it exists. */ +#ifdef RB_CVAR_SET_4ARGS rb_cvar_set(self, ERROR_HANDLER_ID, block, 0); +#else + rb_cvar_set(self, ERROR_HANDLER_ID, block); +#endif return self; } @@ -68,7 +72,11 @@ static VALUE ruby_xml_error_reset_handler(VALUE self) { +#ifdef RB_CVAR_SET_4ARGS rb_cvar_set(self, ERROR_HANDLER_ID, Qnil, 0); +#else + rb_cvar_set(self, ERROR_HANDLER_ID, Qnil); +#endif return self; } @@ -153,7 +161,11 @@ /* Ruby callback to receive errors - set it to nil by default. */ ERROR_HANDLER_ID = rb_intern("@@__error_handler_callback__"); +#ifdef RB_CVAR_SET_4ARGS rb_cvar_set(eXMLError, ERROR_HANDLER_ID, Qnil, 0); +#else + rb_cvar_set(eXMLError, ERROR_HANDLER_ID, Qnil); +#endif /* Error attributes */ rb_define_attr(eXMLError, "level", 1, 0); diff -ur org/ext/libxml/ruby_xml_xpath_context.c mod/ext/libxml/ruby_xml_xpath_context.c --- org/ext/libxml/ruby_xml_xpath_context.c 2008-11-19 09:39:27.000000000 +0200 +++ mod/ext/libxml/ruby_xml_xpath_context.c 2008-11-21 23:33:17.000000000 +0200 @@ -205,12 +205,12 @@ ruby_xml_xpath_context_register_namespace(self, rprefix, ruri); break; case T_ARRAY: - for (i = 0; i < RARRAY(nslist)->len; i++) { - ruby_xml_xpath_context_register_namespaces(self, RARRAY(nslist)->ptr[i]); + for (i = 0; i < RARRAY_LEN(nslist); i++) { + ruby_xml_xpath_context_register_namespaces(self, RARRAY_PTR(nslist)[i]); } break; case T_HASH: - st_foreach(RHASH(nslist)->tbl, iterate_ns_hash, self); + st_foreach(RHASH_TBL(nslist), iterate_ns_hash, self); break; default: rb_raise(rb_eArgError, "Invalid argument type, only accept string, array of strings, or an array of arrays"); diff -ur org/lib/libxml/error.rb mod/lib/libxml/error.rb --- org/lib/libxml/error.rb 2008-11-18 02:23:01.000000000 +0200 +++ mod/lib/libxml/error.rb 2008-11-22 01:09:22.000000000 +0200 @@ -33,13 +33,13 @@ def level_to_s case self.level - when NONE: + when NONE '' - when WARNING: + when WARNING 'Warning:' - when ERROR: + when ERROR 'Error:' - when FATAL: + when FATAL 'Fatal error:' end end