aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'io.c')
-rw-r--r--io.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/io.c b/io.c
index 90fa2339a7..586e7b5bd6 100644
--- a/io.c
+++ b/io.c
@@ -5307,17 +5307,19 @@ rb_scan_open_args(int argc, VALUE *argv,
opt = pop_last_hash(&argc, argv);
rb_scan_args(argc, argv, "12", &fname, &vmode, &vperm);
FilePathValue(fname);
-#if defined __APPLE__
+#ifdef __APPLE__
{
static rb_encoding *fs_encoding;
+ static rb_encoding *utf8mac_encoding;
rb_encoding *fname_encoding = rb_enc_get(fname);
if (!fs_encoding)
fs_encoding = rb_filesystem_encoding();
+ if (!utf8mac_encoding)
+ utf8mac_encoding = rb_enc_find("UTF8-MAC");
if (rb_usascii_encoding() != fname_encoding
&& rb_ascii8bit_encoding() != fname_encoding
-#if defined __APPLE__
&& rb_utf8_encoding() != fname_encoding
-#endif
+ && rb_utf8mac_encoding() != fname_encoding
&& fs_encoding != fname_encoding) {
static VALUE fs_enc;
if (!fs_enc)