summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-28 02:40:32 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-28 02:40:32 +0000
commit1d0ddd4218e701d086b3e4f21fd38183fa3a4e8a (patch)
treea655e91a72fb779713472f6dff67516b288f21d2
parent51ea3db6d565f7048d2953479e90625226f75740 (diff)
merge revision(s) 34753:
* io.c (rb_io_extract_modeenc): fail only if conflicting text/binary modes given explicitly. [ruby-dev:45268][Bug #6055] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@35826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--io.c7
-rw-r--r--test/ruby/test_io.rb11
-rw-r--r--version.h6
4 files changed, 21 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 663a7655f5..e7e6bc0a55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon May 28 11:40:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (rb_io_extract_modeenc): fail only if conflicting
+ text/binary modes given explicitly. [ruby-dev:45268][Bug #6055]
+
Fri May 25 17:18:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (f_arglist): should reset lexical states after empty
diff --git a/io.c b/io.c
index 1aa58d5be7..c664450311 100644
--- a/io.c
+++ b/io.c
@@ -4700,7 +4700,7 @@ rb_io_extract_modeenc(VALUE *vmode_p, VALUE *vperm_p, VALUE opthash,
vmode_handle:
if (NIL_P(vmode)) {
- fmode = FMODE_READABLE | DEFAULT_TEXTMODE;
+ fmode = FMODE_READABLE;
oflags = O_RDONLY;
}
else if (!NIL_P(intmode = rb_check_to_integer(vmode, "to_int"))) {
@@ -4747,6 +4747,11 @@ rb_io_extract_modeenc(VALUE *vmode_p, VALUE *vperm_p, VALUE opthash,
if (fmode & FMODE_BINMODE)
oflags |= O_BINARY;
#endif
+#if DEFAULT_TEXTMODE
+ else if (NIL_P(vmode)) {
+ fmode |= DEFAULT_TEXTMODE;
+ }
+#endif
if (!has_vmode) {
v = rb_hash_aref(opthash, sym_mode);
if (!NIL_P(v)) {
diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb
index 36dab0815d..39dc784050 100644
--- a/test/ruby/test_io.rb
+++ b/test/ruby/test_io.rb
@@ -1951,15 +1951,18 @@ End
def test_open_mode
feature4742 = "[ruby-core:36338]"
+ bug6055 = '[ruby-dev:45268]'
mkcdtmpdir do
- refute_nil(f = File.open('symbolic', 'w'))
+ assert_not_nil(f = File.open('symbolic', 'w'))
f.close
- refute_nil(f = File.open('numeric', File::WRONLY|File::TRUNC|File::CREAT))
+ assert_not_nil(f = File.open('numeric', File::WRONLY|File::TRUNC|File::CREAT))
f.close
- refute_nil(f = File.open('hash-symbolic', :mode => 'w'))
+ assert_not_nil(f = File.open('hash-symbolic', :mode => 'w'))
f.close
- refute_nil(f = File.open('hash-numeric', :mode => File::WRONLY|File::TRUNC|File::CREAT), feature4742)
+ assert_not_nil(f = File.open('hash-numeric', :mode => File::WRONLY|File::TRUNC|File::CREAT), feature4742)
+ f.close
+ assert_nothing_raised(bug6055) {f = File.open('hash-symbolic', binmode: true)}
f.close
end
end
diff --git a/version.h b/version.h
index 6445a25528..f16bc9f57b 100644
--- a/version.h
+++ b/version.h
@@ -1,10 +1,10 @@
#define RUBY_VERSION "1.9.3"
-#define RUBY_PATCHLEVEL 231
+#define RUBY_PATCHLEVEL 232
-#define RUBY_RELEASE_DATE "2012-05-25"
+#define RUBY_RELEASE_DATE "2012-05-28"
#define RUBY_RELEASE_YEAR 2012
#define RUBY_RELEASE_MONTH 5
-#define RUBY_RELEASE_DAY 25
+#define RUBY_RELEASE_DAY 28
#include "ruby/version.h"