From 392fe91fb5885f06904bedf05a94ce4163fc87d8 Mon Sep 17 00:00:00 2001 From: Inori Date: Sat, 21 Sep 2019 20:19:34 -0400 Subject: [PATCH] rb_get_args is annoying --- binding/filesystem-binding.cpp | 13 ++++++++++--- binding/miniffi-binding.cpp | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/binding/filesystem-binding.cpp b/binding/filesystem-binding.cpp index 4c833075..cc429dd9 100644 --- a/binding/filesystem-binding.cpp +++ b/binding/filesystem-binding.cpp @@ -174,8 +174,15 @@ RB_METHOD(kernelLoadData) RB_UNUSED_PARAM; VALUE filename; - bool raw = false; - rb_get_args(argc, argv, "S|b", &filename, &raw RB_ARG_END); + VALUE raw; + rb_scan_args(argc, argv, "11", &filename, &raw); + SafeStringValue(filename); + + // There's gotta be an easier way to do this + if (raw != Qnil && raw != Qtrue && raw != Qfalse) + { + rb_raise(rb_eTypeError, "load_data: second argument must be Boolean"); + } // Until a faster method for getting RGSSAD data is // written (could just copy RMXP, keeping stuff in @@ -194,7 +201,7 @@ RB_METHOD(kernelLoadData) rb_funcall(f, rb_intern("close"), 0); return ret; } - return kernelLoadDataInt(RSTRING_PTR(filename), true, raw); + return kernelLoadDataInt(RSTRING_PTR(filename), true, RTEST(raw)); } RB_METHOD(kernelSaveData) diff --git a/binding/miniffi-binding.cpp b/binding/miniffi-binding.cpp index f1741d41..829e1411 100644 --- a/binding/miniffi-binding.cpp +++ b/binding/miniffi-binding.cpp @@ -248,7 +248,7 @@ RB_METHOD(MiniFFI_call) break; case _T_BOOL: - lParam = (rb_ary_entry(args, i) == Qtrue); + lParam = RTEST(rb_ary_entry(args, i)); break; case _T_NUMBER: case _T_INTEGER: default: