summaryrefslogtreecommitdiff
path: root/iseq.c
diff options
context:
space:
mode:
authortmm1 <tmm1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-17 10:55:29 +0000
committertmm1 <tmm1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-17 10:55:29 +0000
commitcef6a377fcae99d062b2c7d9e0db2c07719c6975 (patch)
treefd94d29a17c9856dd9b706b2bd2461986f9b98c2 /iseq.c
parent626235a6d7f0808dd83baae73913efea4f71fa57 (diff)
iseq.c: remove duplicated strings for file paths
* iseq.c (iseq_location_setup): re-use existing string when iseq has the same path and absolute_path. [Bug #8149] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'iseq.c')
-rw-r--r--iseq.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/iseq.c b/iseq.c
index ef6a7022df..63be78e37c 100644
--- a/iseq.c
+++ b/iseq.c
@@ -188,7 +188,10 @@ iseq_location_setup(rb_iseq_t *iseq, VALUE path, VALUE absolute_path, VALUE name
{
rb_iseq_location_t *loc = &iseq->location;
loc->path = path;
- loc->absolute_path = absolute_path;
+ if (RTEST(absolute_path) && rb_str_cmp(path, absolute_path) == 0)
+ loc->absolute_path = path;
+ else
+ loc->absolute_path = absolute_path;
loc->label = loc->base_label = name;
loc->first_lineno = first_lineno;
return loc;