mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 13:04:13 +02:00
* string.c (rb_str_change_terminator_length): New function to change
termlen and resize heap for the terminator. This is split from rb_str_fill_terminator (str_fill_term) because filling terminator and changing terminator length are different things. [Bug #12536] * internal.h: declaration for rb_str_change_terminator_length. * string.c (str_fill_term): Simplify only to zero-fill the terminator. For non-shared strings, it assumes that (capa + termlen) bytes of heap is allocated. This partially reverts r55557. * encoding.c (rb_enc_associate_index): rb_str_change_terminator_length is used, and it should be called whenever the termlen is changed. * string.c (str_capacity): New static function to return capacity of a string with the given termlen, because the termlen may sometimes be different from TERM_LEN(str) especially during changing termlen or filling terminator with specific termlen. * string.c (rb_str_capacity): Use str_capacity. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a3ca2c7cd5
commit
5eff15d1bd
4 changed files with 70 additions and 27 deletions
|
@ -1356,6 +1356,7 @@ VALUE rb_id_quote_unprintable(ID);
|
|||
#define QUOTE(str) rb_str_quote_unprintable(str)
|
||||
#define QUOTE_ID(id) rb_id_quote_unprintable(id)
|
||||
char *rb_str_fill_terminator(VALUE str, const int termlen);
|
||||
void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen);
|
||||
VALUE rb_str_locktmp_ensure(VALUE str, VALUE (*func)(VALUE), VALUE arg);
|
||||
#ifdef RUBY_ENCODING_H
|
||||
VALUE rb_external_str_with_enc(VALUE str, rb_encoding *eenc);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue