summaryrefslogtreecommitdiffhomepage
path: root/src/string.c
AgeCommit message (Collapse)Author
2018-09-19Remove implicit conversion using `to_str` method.Yukihiro "Matz" Matsumoto
We have added internal convenience method `__to_str` which does string type check.
2018-06-28Use `mrb_raise()` instead of `mrb_raisef()`; ref #4062Yukihiro "Matz" Matsumoto
2018-06-27Add negative check in `mrb_str_resize`; fix #4062Yukihiro "Matz" Matsumoto
2018-05-02Need to call `mrb_str_modify()` in `mrb_str_cat_str()`; fix #4018Yukihiro "Matz" Matsumoto
If `str` and `str2` are the same string object `str->ptr` may be rewritten by `mrb_str_modify()`.
2018-04-28Fix broken support of `MRB_WITHOUT_FLOAT`; fix #4015Yukihiro "Matz" Matsumoto
2018-04-17Fallback to float when caompiled binary with 64bit compiler.Takeshi Watanabe
closes #3997.
2018-03-24Return nil if type differ in `String#<=>`.Takeshi Watanabe
2018-02-12`String#inspect` to use hexadecimal, not octal to print unprintable.Yukihiro "Matz" Matsumoto
2017-12-23Make source compilable with C++17Lothar Scholz
Changes applied: - Removing "register" keyword - Fixing const pointer to pointer assignments - Adding type casts to rb_malloc calls
2017-12-12Modifying frozen objects will raise `FrozenError`.Yukihiro "Matz" Matsumoto
`FrozenError` is a subclass of `RuntimeError` which used to be raised. [Ruby2.5]
2017-11-08Should allocate memory region before updating `len`; fix #3842Yukihiro "Matz" Matsumoto
Otherwise half-baked string object will be allocated.
2017-11-04Merge branch 'master' of github.com:mruby/mrubyYAMAMOTO Masaya
2017-11-03Should not use `FSHARED` state for string from `irep` pools; fix #3829Yukihiro "Matz" Matsumoto
This strings in `irep` pools may be freed forcefully in `mrb_irep_free`. This commit probably fixes #3817 as well.
2017-10-11Add MRB_WITHOUT_FLOATYAMAMOTO Masaya
2017-10-01Add new type of shared string: `RSTR_FSHARED`.Yukihiro "Matz" Matsumoto
`RSTR_FSHARED` use frozen strings as shared body instead of `struct mrb_shared_string`. This reduces allocation from literal strings.
2017-09-27fix: src\string.c(2219): warning C4244: 'function': conversion from ↵Tomasz Dąbrowski
'mrb_int' to 'int', possible loss of data
2017-09-27fix: src\string.c(1924): warning C4244: '=': conversion from 'mrb_int' to ↵Tomasz Dąbrowski
'int', possible loss of data
2017-09-27fix: src\string.c(1130): warning C4244: '=': conversion from 'mrb_int' to ↵Tomasz Dąbrowski
'int', possible loss of data
2017-09-27fix: src\string.c(497): warning C4244: '=': conversion from 'mrb_int' to ↵Tomasz Dąbrowski
'long', possible loss of data
2017-09-27fix: src\hash.c(27): warning C4244: '=': conversion from 'mrb_int' to ↵Tomasz Dąbrowski
'khint_t', possible loss of data
2017-08-22`strlen` returns `size_t`; need to cast before assigning to `int`.Yukihiro "Matz" Matsumoto
2017-08-22(Try to) fix mixture of `int` and `size_t` in UTF-8 conversion.Yukihiro "Matz" Matsumoto
This only effects VC.
2017-08-18`mrb_str_cat`: `capa` should not be zero to avoid infinite loops.Yukihiro "Matz" Matsumoto
2017-08-18`mrb_str_cat`: `capa` should be bigger than `total`.Yukihiro "Matz" Matsumoto
2017-08-18`ARY_CAPA` handles capacity for embedded arrays by itself.Yukihiro "Matz" Matsumoto
2017-08-18Separate `mrb_str_buf_new` and `mrb_str_new_capa`.Yukihiro "Matz" Matsumoto
`mrb_str_buf_new` is an old function that ensures capacity size of `MRB_STR_BUF_MIN_SIZE` minimum. Usually one need to use `mrb_str_new_capa` instead.
2017-08-18Remove code duplication in `mrb_str_concat`.Yukihiro "Matz" Matsumoto
2017-08-18Merge `str_buf_cat` and `mrb_str_cat`.Yukihiro "Matz" Matsumoto
2017-08-11Silence integer type conversion warnings.Yukihiro "Matz" Matsumoto
2017-08-09Replaced tabs with spacesChristopher Aue
2017-07-28Added mrb_str_index to the mrb APIChristopher Aue
2017-07-12Use "$!" specifier of `mrb_get_args`.Yukihiro "Matz" Matsumoto
2017-07-05Avoid undefined behavior of signed integer overflow; fix #3728Yukihiro "Matz" Matsumoto
2017-05-13Make string embad from sharedksss
2017-05-05Adjust to the optimum typeksss
2017-04-06Make String#replace to check equality before modifying flags.Yukihiro "Matz" Matsumoto
ref #3588
2017-04-03Unify `else` clause styleYukihiro "Matz" Matsumoto
2017-04-03String#initialize to make a string empty; ref #3574Yukihiro "Matz" Matsumoto
2017-03-05String#index shouldn't return nil when "".index ""ksss
2017-02-28Fix integer overflow; fix #3473Yukihiro "Matz" Matsumoto
The fix is suggested by https://hackerone.com/lucnguyen
2017-02-28Add type check by mrb_get_args(); ref #3476Yukihiro "Matz" Matsumoto
2017-02-28Add check before calling str_substr(); ref #3476Yukihiro "Matz" Matsumoto
2017-02-28Check if the value is fixnum before mrb_funcall(); fix #3476Yukihiro "Matz" Matsumoto
The issue is reported by https://hackerone.com/aerodudrizzt
2017-02-11Revert "Optimization for String#* for 1-byte strings"Tomasz Dabrowski
This reverts commit d1bc7caecaf337976351934d5910726106601bd9.
2017-02-11String#replace should update s->flags for MRB_STR_NO_UTF.Yukihiro "Matz" Matsumoto
Otherwise String#size may return wrong length; fix #3448
2017-02-11Add type cast to pacify warningYukihiro "Matz" Matsumoto
2017-02-10Optimization for String#* for 1-byte stringsTomasz Dabrowski
2017-02-07Fix interpolation escaping in String.inspectEdgar Boda-Majer
2017-01-23Changed the behavior of mrb_range_beg_len(); close #3411Yukihiro "Matz" Matsumoto
The new API is: int mrb_range_beg_len(mrb, range, &beg, &len, len, trunc) The new argument `trunc` is a boolean value that specifies whether the function truncates the range. The new return value is an integer instead of a boolean, that is: 0: not a range 1: range with proper edges 2: out of range To get the old behavior, you have to rewrite: mrb_range_beg_len(mrb, range, &beg, &len, len) to: mrn_range_beg_len(mrb, range, &beg, &len, len, TRUE) == 1 [Breaking Change]
2017-01-23Should not make empty strings shared; fix #3407Yukihiro "Matz" Matsumoto