From e2f5883e217808cd72bfdf7a56dadf2023c9dbaf Mon Sep 17 00:00:00 2001 From: wyhaines Date: Wed, 27 Jan 2010 18:18:10 +0000 Subject: Backport #1916 [ruby-core:24838]; (rb_sysopen): workaround for MSVCRT's bug. Should fix the original bug report which was: File.open crashes when flags File::RDONLY | File::APPEND are passed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@26455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++-- io.c | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3da694e87f..13b20b6692 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,9 @@ Wed Jan 27 22:16:00 2010 Kirk Haines - * re.h: Backport #1875 [ruby-core:24735]; (RMATCH_REGS): added for compatibility. - ruby.h: (RFLOAT_VALUE, RSTRING_END, RREGEXP_SRC_*, RBIGNUM_*): backported macros for compatiblity from trunk. + * io.c: Backport #1916 [ruby-core:24838]; (rb_sysopen): workaround for MSVCRT's bug. + + * re.h: Backport #1875 [ruby-core:24735]; (RMATCH_REGS): added for compatibility. r26452 + ruby.h: (RFLOAT_VALUE, RSTRING_END, RREGEXP_SRC_*, RBIGNUM_*): backported macros for compatiblity from trunk. r26452 * io.c: Backport #1818 [ruby-core:24561]; (argf_eof): go to the next file if called after ARGF.close or ARGF.skip. r26451 diff --git a/io.c b/io.c index 4d930a02cc..360cbd4b97 100644 --- a/io.c +++ b/io.c @@ -2791,10 +2791,16 @@ rb_sysopen(fname, flags, mode) { int fd; +#ifdef _WIN32 + errno = EINVAL; +#endif fd = open(fname, flags, mode); if (fd < 0) { if (errno == EMFILE || errno == ENFILE) { rb_gc(); +#ifdef _WIN32 + errno = EINVAL; +#endif fd = open(fname, flags, mode); } if (fd < 0) { -- cgit v1.2.3