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
