[Ruby] Pass Qnil instead of NULL to rb_funcall()

This silences GCC -Wconversion-null warning (on by default with recent
GCC).
diff --git a/CHANGES.current b/CHANGES.current
index d923c29..84842a8 100644
--- a/CHANGES.current
+++ b/CHANGES.current
@@ -7,6 +7,10 @@
 Version 4.0.0 (in progress)
 ===========================
 
+2018-04-03: olly
+	    [Ruby] Fix to pass Qnil instead of NULL to rb_funcall(), which silences GCC
+	    -Wconversion-null warning (on by default with recent GCC).
+
 2018-03-09: fultonwi
             [Java] #1184 Fix swigReleaseOwnership() and swigTakeOwnership() regression
             for non-director classes. Restores a dynamic_cast which was previously removed.
diff --git a/Doc/Manual/Ruby.html b/Doc/Manual/Ruby.html
index 04a4f1c..433afd7 100644
--- a/Doc/Manual/Ruby.html
+++ b/Doc/Manual/Ruby.html
@@ -3704,7 +3704,7 @@
 <pre>%typemap(in) (int nattributes, const char **names, const int *values)
   (VALUE keys_arr, int i, VALUE key, VALUE val) {
     Check_Type($input, T_HASH);
-    <b>$1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));</b>
+    <b>$1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));</b>
 }</pre>
 </div>
 
@@ -3717,7 +3717,7 @@
 <pre>%typemap(in) (int nattributes, const char **names, const int *values)
   (VALUE keys_arr, int i, VALUE key, VALUE val) {
     Check_Type($input, T_HASH);
-    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
+    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
     <b>$2 = NULL;
     $3 = NULL;
     if ($1 &gt; 0) {
@@ -3736,13 +3736,13 @@
 <pre>%typemap(in) (int nattributes, const char **names, const int *values)
   (VALUE keys_arr, int i, VALUE key, VALUE val) {
     Check_Type($input, T_HASH);
-    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
+    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
     $2 = NULL;
     $3 = NULL;
     if ($1 &gt; 0) {
       $2 = (char **) malloc($1*sizeof(char *));
       $3 = (int *) malloc($1*sizeof(int));
-      <b>keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
+      <b>keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
       for (i = 0; i &lt; $1; i++) {
       }</b>
     }
@@ -3758,13 +3758,13 @@
 <pre>%typemap(in) (int nattributes, const char **names, const int *values)
   (VALUE keys_arr, int i, VALUE key, VALUE val) {
     Check_Type($input, T_HASH);
-    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
+    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
     $2 = NULL;
     $3 = NULL;
     if ($1 &gt; 0) {
       $2 = (char **) malloc($1*sizeof(char *));
       $3 = (int *) malloc($1*sizeof(int));
-      keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
+      keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
       for (i = 0; i &lt; $1; i++) {
         <b>key = rb_ary_entry(keys_arr, i);
         val = rb_hash_aref($input, key);</b>
@@ -3781,13 +3781,13 @@
 <pre>%typemap(in) (int nattributes, const char **names, const int *values)
   (VALUE keys_arr, int i, VALUE key, VALUE val) {
     Check_Type($input, T_HASH);
-    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
+    $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
     $2 = NULL;
     $3 = NULL;
     if ($1 &gt; 0) {
       $2 = (char **) malloc($1*sizeof(char *));
       $3 = (int *) malloc($1*sizeof(int));
-      keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
+      keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
       for (i = 0; i &lt; $1; i++) {
         key = rb_ary_entry(keys_arr, i);
         val = rb_hash_aref($input, key);
@@ -3805,13 +3805,13 @@
 <pre>%typemap(in) (int nattributes, const char **names, const int *values)
   (VALUE keys_arr, int i, VALUE key, VALUE val) {
   Check_Type($input, T_HASH);
-  $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
+  $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
   $2 = NULL;
   $3 = NULL;
   if ($1 &gt; 0) {
     $2 = (char **) malloc($1*sizeof(char *));
     $3 = (int *) malloc($1*sizeof(int));
-    keys_arr = rb_funcall($input, rb_intern("keys"), 0, NULL);
+    keys_arr = rb_funcall($input, rb_intern("keys"), 0, Qnil);
     for (i = 0; i &lt; $1; i++) {
       key = rb_ary_entry(keys_arr, i);
       val = rb_hash_aref($input, key);
diff --git a/Examples/ruby/hashargs/example.i b/Examples/ruby/hashargs/example.i
index 10e209e..4c3f307 100644
--- a/Examples/ruby/hashargs/example.i
+++ b/Examples/ruby/hashargs/example.i
@@ -2,13 +2,13 @@
 
 %typemap(in) (int nattributes, const char **names, const int *values) (VALUE keys_ary, int i, VALUE key, VALUE val) {
   Check_Type($input, T_HASH);
-  $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, NULL));
+  $1 = NUM2INT(rb_funcall($input, rb_intern("size"), 0, Qnil));
   $2 = NULL;
   $3 = NULL;
   if ($1 > 0) {
     $2 = (char **) malloc($1*sizeof(char *));
     $3 = (int *) malloc($1*sizeof(int));
-    keys_ary = rb_funcall($input, rb_intern("keys"), 0, NULL);
+    keys_ary = rb_funcall($input, rb_intern("keys"), 0, Qnil);
     for (i = 0; i < $1; i++) {
       key = rb_ary_entry(keys_ary, i);
       val = rb_hash_aref($input, key);
diff --git a/Source/Modules/ruby.cxx b/Source/Modules/ruby.cxx
index 69a849d..6416046 100644
--- a/Source/Modules/ruby.cxx
+++ b/Source/Modules/ruby.cxx
@@ -3046,7 +3046,7 @@
       if (argc > 0) {
 	Printf(w->code, "%s = rb_funcall(swig_get_self(), rb_intern(\"%s\"), %d%s);\n", Swig_cresult_name(), methodName, argc, args);
       } else {
-	Printf(w->code, "%s = rb_funcall(swig_get_self(), rb_intern(\"%s\"), 0, NULL);\n", Swig_cresult_name(), methodName);
+	Printf(w->code, "%s = rb_funcall(swig_get_self(), rb_intern(\"%s\"), 0, Qnil);\n", Swig_cresult_name(), methodName);
       }
       if ( initstack ) Printf(w->code, "SWIG_RELEASE_STACK;\n");
     }