From 226b59c58ef93a47d5559bfd35d824dfbfbc3044 Mon Sep 17 00:00:00 2001
From: Jari Vetoniemi <jari.vetoniemi@indooratlas.com>
Date: Sun, 15 Mar 2020 14:39:31 +0900
Subject: [PATCH] Convert nil int/float arguments to 0

Some games pass nil as bgs/bgm play pos arg :/
---
 binding-mri/binding-util.h | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/binding-mri/binding-util.h b/binding-mri/binding-util.h
index 1b758be..3b15935 100644
--- a/binding-mri/binding-util.h
+++ b/binding-mri/binding-util.h
@@ -227,8 +227,12 @@ rb_float_arg(VALUE arg, double *out, int argPos = 0)
 		*out = FIX2INT(arg);
 		break;
 
+	case RUBY_T_NIL :
+		*out = 0;
+		break;
+
 	default:
-		rb_raise(rb_eTypeError, "Argument %d: Expected float", argPos);
+		rb_raise(rb_eTypeError, "Argument %d: Expected float (got 0x%x)", argPos, rb_type(arg));
 	}
 }
 
@@ -246,8 +250,12 @@ rb_int_arg(VALUE arg, int *out, int argPos = 0)
 		*out = FIX2INT(arg);
 		break;
 
+        case RUBY_T_NIL :
+                *out = 0;
+                break;
+
 	default:
-		rb_raise(rb_eTypeError, "Argument %d: Expected fixnum", argPos);
+		rb_raise(rb_eTypeError, "Argument %d: Expected fixnum (got 0x%x)", argPos, rb_type(arg));
 	}
 }