From 378161fe68f283599ce91cda3aaa3658af7c6e89 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 31 Aug 2013 04:30:25 +0000 Subject: dir.c: reduce string object * dir.c (dir_each): get rid of allocate new string from UTF-8 string. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- dir.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'dir.c') diff --git a/dir.c b/dir.c index ad6793ffdc..f42a769d71 100644 --- a/dir.c +++ b/dir.c @@ -627,14 +627,13 @@ dir_each(VALUE dir) size_t namlen = NAMLEN(dp); VALUE path; #if HAVE_HFS - VALUE utf8str = Qnil; if (hfs_p && has_nonascii(name, namlen) && - !NIL_P(utf8str = rb_str_normalize_ospath(name, namlen))) { - RSTRING_GETMEM(utf8str, name, namlen); + !NIL_P(path = rb_str_normalize_ospath(name, namlen))) { + path = rb_external_str_with_enc(path, dirp->enc); } + else #endif path = rb_external_str_new_with_enc(name, namlen, dirp->enc); - IF_HAVE_HFS(if (!NIL_P(utf8str)) rb_str_resize(utf8str, 0)); rb_yield(path); if (dirp->dir == NULL) dir_closed(); } -- cgit v1.2.3