diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-06-12 12:56:21 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-06-12 12:56:21 +0900 |
| commit | ff4925b804cc70aa8571e9aed2793114ef0223f6 (patch) | |
| tree | 4095de3172d5e454a32b3f8f084bb1708e0f64dd /src/string.c | |
| parent | 5937c29281d9bf51ca85b79c8f3dea204909a073 (diff) | |
| download | mruby-ff4925b804cc70aa8571e9aed2793114ef0223f6.tar.gz mruby-ff4925b804cc70aa8571e9aed2793114ef0223f6.zip | |
corrupted String#inspect on backslash escapes
Diffstat (limited to 'src/string.c')
| -rw-r--r-- | src/string.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/src/string.c b/src/string.c index fae3392cf..fcd68a2f2 100644 --- a/src/string.c +++ b/src/string.c @@ -2943,18 +2943,15 @@ mrb_str_append(mrb_state *mrb, mrb_value str, mrb_value str2) mrb_value mrb_str_inspect(mrb_state *mrb, mrb_value str) { - const char *p, *pend, *prev; + const char *p, *pend; char buf[CHAR_ESC_LEN + 1]; mrb_value result = mrb_str_new_cstr(mrb, "\""); p = RSTRING_PTR(str); pend = RSTRING_END(str); - prev = p; for (;p < pend; p++) { unsigned int c, cc; - int n; c = *p; - n = 1; if (c == '"'|| c == '\\' || (c == '#' && IS_EVSTR(p, pend))) { buf[0] = '\\'; buf[1] = c; mrb_str_buf_cat(mrb, result, buf, 2); @@ -2977,18 +2974,14 @@ mrb_str_inspect(mrb_state *mrb, mrb_value str) default: cc = 0; break; } if (cc) { - if (p - n > prev) mrb_str_buf_cat(mrb, result, prev, p - n - prev); buf[0] = '\\'; buf[1] = (char)cc; mrb_str_buf_cat(mrb, result, buf, 2); - prev = p; continue; } else { - if (p - n > prev) mrb_str_buf_cat(mrb, result, prev, p - n - prev); sprintf(buf, "\\%03o", c & 0377); mrb_str_buf_cat(mrb, result, buf, strlen(buf)); - prev = p; continue; } } |
