summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwyhaines <wyhaines@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-01-27 18:18:10 +0000
committerwyhaines <wyhaines@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-01-27 18:18:10 +0000
commite2f5883e217808cd72bfdf7a56dadf2023c9dbaf (patch)
tree01dd2c572c9c69f7beb643ed05b464f7bedf44fa
parent96d07f510a12323095a237ba34ef4dcb8fee566b (diff)
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
-rw-r--r--ChangeLog6
-rw-r--r--io.c6
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 <khaines@ruby-lang.org>
- * 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) {