зеркало из https://github.com/github/ruby.git
* ext/stringio/stringio.c (strio_write): zero fill a gap if exsts.
[ruby-dev:24190] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
3d8690ebdb
Коммит
a838eb5c65
11
ChangeLog
11
ChangeLog
|
@ -1,14 +1,19 @@
|
|||
Wed Sep 8 18:44:03 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* ext/stringio/stringio.c (strio_write): zero fill a gap if exsts.
|
||||
[ruby-dev:24190]
|
||||
|
||||
Wed Sep 8 15:19:49 2004 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* ext/tcltklib/tcltklib.c (ip_init): cannot create a IP at level 4
|
||||
|
||||
* ext/tk/lib/multi-tk.rb: improve 'exit' operation, security check,
|
||||
* ext/tk/lib/multi-tk.rb: improve 'exit' operation, security check,
|
||||
and error treatment
|
||||
|
||||
* ext/tk/lib/multi-tk.rb: allow a trusted slave IP to create slave IPs
|
||||
|
||||
* ext/tk/lib/tk/listbox.rb: add TkListbox#value, value=, clear, and
|
||||
erase
|
||||
* ext/tk/lib/tk/listbox.rb: add TkListbox#value, value=, clear, and
|
||||
erase
|
||||
|
||||
* ext/tk/lib/tk/text.rb: add TkText#clear and erase
|
||||
|
||||
|
|
|
@ -771,22 +771,24 @@ strio_write(self, str)
|
|||
VALUE self, str;
|
||||
{
|
||||
struct StringIO *ptr = writable(StringIO(self));
|
||||
long len;
|
||||
long len, olen;
|
||||
|
||||
if (TYPE(str) != T_STRING)
|
||||
str = rb_obj_as_string(str);
|
||||
len = RSTRING(str)->len;
|
||||
if (!len) return INT2FIX(0);
|
||||
check_modifiable(ptr);
|
||||
olen = RSTRING(ptr->string)->len;
|
||||
if (ptr->flags & STRIO_APPEND) {
|
||||
ptr->pos = RSTRING(ptr->string)->len;
|
||||
ptr->pos = olen;
|
||||
}
|
||||
if (ptr->pos == RSTRING(ptr->string)->len) {
|
||||
if (ptr->pos == olen) {
|
||||
rb_str_cat(ptr->string, RSTRING(str)->ptr, len);
|
||||
}
|
||||
else {
|
||||
if (ptr->pos + len > RSTRING(ptr->string)->len) {
|
||||
if (ptr->pos + len > olen) {
|
||||
rb_str_resize(ptr->string, ptr->pos + len);
|
||||
MEMZERO(RSTRING(ptr->string)->ptr + olen, char, ptr->pos - olen);
|
||||
}
|
||||
else {
|
||||
rb_str_modify(ptr->string);
|
||||
|
|
|
@ -20,7 +20,7 @@ class TestStringIO < Test::Unit::TestCase
|
|||
io.puts "abc"
|
||||
io.truncate(0)
|
||||
io.puts "def"
|
||||
assert_equal("\0\0\0def\n", io.string)
|
||||
assert_equal("\0\0\0\0def\n", io.string)
|
||||
end
|
||||
|
||||
def test_seek_beyond_eof # [ruby-dev:24194]
|
||||
|
|
Загрузка…
Ссылка в новой задаче