summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 18:08:08 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 18:08:08 +0000
commit3c66a5b25eeee2a0b1b7768e3155048339ff5be8 (patch)
tree3d1203725d436dce09014fb19c3af2c70f40148b
parent446a67c08e13adc3b110ba67a7714a1cf35bcda7 (diff)
* io.c (make_writeconv): copy invalid/undef flags.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--io.c17
2 files changed, 12 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 0a067b6d0a..76b4c8a18d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Aug 26 03:06:48 2008 Tanaka Akira <akr@fsij.org>
+
+ * io.c (make_writeconv): copy invalid/undef flags.
+
Tue Aug 26 02:47:08 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
* common.mk (dist): tool/make-snapshot is executable.
diff --git a/io.c b/io.c
index 5a33c25431..827c5b0eee 100644
--- a/io.c
+++ b/io.c
@@ -696,21 +696,24 @@ make_writeconv(rb_io_t *fptr)
fptr->writeconv_initialized = 1;
- rb_econv_opts(Qnil, &fptr->writeconv_pre_opts);
-
+ /* ECONV_INVALID_XXX and ECONV_UNDEF_XXX should be set both.
+ * But ECONV_CRLF_NEWLINE_ENCODER should be set only for the first. */
+ fptr->writeconv_pre_opts = fptr->encs.opts;
ecopts = fptr->encs.opts;
#ifdef TEXTMODE_NEWLINE_ENCODER
- if (NEED_NEWLINE_ENCODER(fptr))
- ecopts.flags |= TEXTMODE_NEWLINE_ENCODER;
-
if (!fptr->encs.enc) {
+ if (NEED_NEWLINE_ENCODER(fptr))
+ ecopts.flags |= TEXTMODE_NEWLINE_ENCODER;
fptr->writeconv = rb_econv_open("", "", &ecopts);
if (!fptr->writeconv)
rb_exc_raise(rb_econv_open_exc("", "", &ecopts));
fptr->writeconv_stateless = Qnil;
return;
}
+
+ if (NEED_NEWLINE_ENCODER(fptr))
+ fptr->writeconv_pre_opts.flags |= TEXTMODE_NEWLINE_ENCODER;
#endif
enc = fptr->encs.enc2 ? fptr->encs.enc2 : fptr->encs.enc;
@@ -726,10 +729,6 @@ make_writeconv(rb_io_t *fptr)
denc = NULL;
fptr->writeconv_stateless = Qnil;
fptr->writeconv = NULL;
-#ifdef TEXTMODE_NEWLINE_ENCODER
- if (NEED_NEWLINE_ENCODER(fptr))
- fptr->writeconv_pre_opts.flags |= TEXTMODE_NEWLINE_ENCODER;
-#endif
}
}
}