aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-20 12:17:14 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-20 12:17:14 +0000
commitbd811e629b5a7a100c49641c69f80ca65e72d8a7 (patch)
treeb217891a9feda986f3e1c0048665dfaacf3e09f9
parent3e7d22e5e49c1d6ff26c725015a115a2ef8b43db (diff)
downloadruby-bd811e629b5a7a100c49641c69f80ca65e72d8a7.tar.gz
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
-rw-r--r--ChangeLog5
-rw-r--r--ext/win32ole/win32ole.c4
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 <nobu@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
* 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);
}
}