summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/tk/extconf.rb4
-rw-r--r--ext/tk/tcltklib.c6
2 files changed, 9 insertions, 1 deletions
diff --git a/ext/tk/extconf.rb b/ext/tk/extconf.rb
index 12bccd58f7..a6e87eb5b3 100644
--- a/ext/tk/extconf.rb
+++ b/ext/tk/extconf.rb
@@ -1795,7 +1795,9 @@ print("check functions.")
%w"ruby_native_thread_p rb_errinfo rb_safe_level rb_hash_lookup
rb_proc_new rb_obj_untrust rb_obj_taint rb_set_safe_level_force
- rb_sourcefile rb_thread_alive_p rb_thread_check_trap_pending".each do |func|
+ rb_sourcefile rb_thread_alive_p rb_thread_check_trap_pending
+ ruby_enc_find_basename
+".each do |func|
have_func(func, "ruby.h")
print(".") # progress
end
diff --git a/ext/tk/tcltklib.c b/ext/tk/tcltklib.c
index 01479301d8..2906cb7281 100644
--- a/ext/tk/tcltklib.c
+++ b/ext/tk/tcltklib.c
@@ -1263,11 +1263,17 @@ setup_rubytkkit(void)
#ifdef __WIN32__
/* rbtk_win32_SetHINSTANCE("tcltklib.so"); */
{
+# ifdef HAVE_RUBY_ENC_FIND_BASENAME
+ const char *base = ruby_enc_find_basename(rb_sourcefile(), NULL, NULL,
+ rb_filesystem_encoding());
+ rbtk_win32_SetHINSTANCE(base);
+# else
VALUE basename;
basename = rb_funcall(rb_cFile, rb_intern("basename"), 1,
rb_str_new2(rb_sourcefile()));
rbtk_win32_SetHINSTANCE(RSTRING_PTR(basename));
RB_GC_GUARD(basename);
+# endif
}
#endif
set_rubytk_kitpath(rb_sourcefile());