summaryrefslogtreecommitdiff
path: root/range.c
diff options
context:
space:
mode:
Diffstat (limited to 'range.c')
-rw-r--r--range.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/range.c b/range.c
index 03ca38d6118..271c0f2ae9e 100644
--- a/range.c
+++ b/range.c
@@ -1317,10 +1317,16 @@ inspect_range(VALUE range, VALUE dummy, int recur)
if (recur) {
return rb_str_new2(EXCL(range) ? "(... ... ...)" : "(... .. ...)");
}
- str = rb_inspect(RANGE_BEG(range));
- if (!NIL_P(RANGE_END(range))) str2 = rb_inspect(RANGE_END(range));
- str = rb_str_dup(str);
+ if (!NIL_P(RANGE_BEG(range)) || NIL_P(RANGE_END(range))) {
+ str = rb_str_dup(rb_inspect(RANGE_BEG(range)));
+ }
+ else {
+ str = rb_str_new(0, 0);
+ }
rb_str_cat(str, "...", EXCL(range) ? 3 : 2);
+ if (NIL_P(RANGE_BEG(range)) || !NIL_P(RANGE_END(range))) {
+ str2 = rb_inspect(RANGE_END(range));
+ }
if (str2 != Qundef) rb_str_append(str, str2);
OBJ_INFECT(str, range);