diff options
| author | dearblue <[email protected]> | 2019-06-22 16:30:36 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2019-06-22 22:36:58 +0900 |
| commit | 7c6d6effaea6ec3cbac01cffc4f094744d53d8b9 (patch) | |
| tree | 45bef029245c22a88cd7c3c03379b5cd70dead05 | |
| parent | f94551ad40c12370770c8e743ba8b39abc430547 (diff) | |
| download | mruby-7c6d6effaea6ec3cbac01cffc4f094744d53d8b9.tar.gz mruby-7c6d6effaea6ec3cbac01cffc4f094744d53d8b9.zip | |
Replacement to function for string reversing
| -rw-r--r-- | src/string.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/string.c b/src/string.c index bfe73b359..282f8d776 100644 --- a/src/string.c +++ b/src/string.c @@ -1671,6 +1671,18 @@ mrb_ptr_to_str(mrb_state *mrb, void *p) return mrb_obj_value(p_str); } +static inline void +str_reverse(char *p, char *e) +{ + char c; + + while (p < e) { + c = *p; + *p++ = *e; + *e-- = c; + } +} + /* 15.2.10.5.30 */ /* * call-seq: @@ -1714,17 +1726,12 @@ mrb_str_reverse_bang(mrb_state *mrb, mrb_value str) { struct RString *s = mrb_str_ptr(str); char *p, *e; - char c; mrb_str_modify(mrb, s); if (RSTR_LEN(s) > 1) { p = RSTR_PTR(s); e = p + RSTR_LEN(s) - 1; - while (p < e) { - c = *p; - *p++ = *e; - *e-- = c; - } + str_reverse(p, e); } return str; } |
