From 27c13f82b9312f984789bb5a0426328272b3b873 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 20 May 2016 12:17:14 +0000 Subject: [PATCH] win32ole.c: share the content * ext/win32ole/win32ole.c (fole_missing): make substring or dup to share the content if possible. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/win32ole/win32ole.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7480c2b28a..8b3e856846 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri May 20 21:17:13 2016 Nobuyoshi Nakada + + * ext/win32ole/win32ole.c (fole_missing): make substring or dup to + share the content if possible. + Fri May 20 19:48:48 2016 Nobuyoshi Nakada * internal.h (NEW_PARTIAL_MEMO_FOR): shrink buffer array not to diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index 31ed28ad44..4dcd22e6f0 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -3303,12 +3303,12 @@ fole_missing(int argc, VALUE *argv, VALUE self) n = RSTRING_LEN(mid); if(mname[n-1] == '=') { rb_check_arity(argc, 2, 2); - argv[0] = rb_enc_str_new(mname, (n-1), cWIN32OLE_enc); + argv[0] = rb_enc_associate(rb_str_subseq(mid, 0, n-1), cWIN32OLE_enc); return ole_propertyput(self, argv[0], argv[1]); } else { - argv[0] = rb_enc_str_new(mname, n, cWIN32OLE_enc); + argv[0] = rb_enc_associate(rb_str_dup(mid), cWIN32OLE_enc); return ole_invoke(argc, argv, self, DISPATCH_METHOD|DISPATCH_PROPERTYGET, FALSE); } }