diff --git a/binding-mri/font-binding.cpp b/binding-mri/font-binding.cpp index b270170..66b6339 100644 --- a/binding-mri/font-binding.cpp +++ b/binding-mri/font-binding.cpp @@ -33,8 +33,13 @@ RB_METHOD(fontDoesExist) { RB_UNUSED_PARAM; - const char *name; - rb_get_args(argc, argv, "z", &name RB_ARG_END); + const char *name = 0; + VALUE nameObj; + + rb_get_args(argc, argv, "o", &nameObj RB_ARG_END); + + if (rb_type(nameObj) == RUBY_T_STRING) + name = rb_string_value_cstr(&nameObj); return rb_bool_new(Font::doesExist(name)); } diff --git a/binding-mruby/font-binding.cpp b/binding-mruby/font-binding.cpp index 7ffad01..c5b82d7 100644 --- a/binding-mruby/font-binding.cpp +++ b/binding-mruby/font-binding.cpp @@ -30,8 +30,13 @@ DEF_TYPE(Font); MRB_FUNCTION(fontDoesExist) { - const char *name; - mrb_get_args(mrb, "z", &name); + const char *name = 0; + mrb_value nameObj; + + mrb_get_args(mrb, "o", &nameObj); + + if (mrb_string_p(nameObj)) + name = mrb_string_value_cstr(mrb, &nameObj); return mrb_bool_value(Font::doesExist(name)); } diff --git a/src/font.cpp b/src/font.cpp index a5dbed5..1d0d74e 100644 --- a/src/font.cpp +++ b/src/font.cpp @@ -247,6 +247,9 @@ Color FontPrivate::defaultColorTmp(255, 255, 255, 255); bool Font::doesExist(const char *name) { + if (!name) + return false; + return shState->fontState().fontPresent(name); }