ruby-changes:4134
From: ko1@a...
Date: Thu, 28 Feb 2008 11:44:26 +0900 (JST)
Subject: [ruby-changes:4134] nobu - Ruby:r15624 (trunk): * file.c (rb_file_flock): immediately returns on EAGAIN if
nobu 2008-02-28 11:43:59 +0900 (Thu, 28 Feb 2008)
New Revision: 15624
Modified files:
trunk/ChangeLog
trunk/file.c
Log:
* file.c (rb_file_flock): immediately returns on EAGAIN if
non-blocking. [ruby-core:15672]
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/file.c?r1=15624&r2=15623&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15624&r2=15623&diff_format=u
Index: ChangeLog
===================================================================
--- ChangeLog (revision 15623)
+++ ChangeLog (revision 15624)
@@ -1,3 +1,8 @@
+Thu Feb 28 11:43:56 2008 Nobuyoshi Nakada <nobu@r...>
+
+ * file.c (rb_file_flock): immediately returns on EAGAIN if
+ non-blocking. [ruby-core:15672]
+
Thu Feb 28 11:23:50 2008 Nobuyoshi Nakada <nobu@r...>
* io.c (rb_io_getline_1): get rid of segfault. [ruby-dev:33938]
Index: file.c
===================================================================
--- file.c (revision 15623)
+++ file.c (revision 15624)
@@ -3256,10 +3256,10 @@
{
#ifndef __CHECKER__
rb_io_t *fptr;
- int op[2];
+ int op[2], op1;
rb_secure(2);
- op[1] = NUM2INT(operation);
+ op[1] = op1 = NUM2INT(operation);
GetOpenFile(obj, fptr);
op[0] = fptr->fd;
@@ -3273,6 +3273,7 @@
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
case EWOULDBLOCK:
#endif
+ if (op1 & LOCK_NB) goto exit;
rb_thread_polling();
rb_io_check_closed(fptr);
continue;
@@ -3287,6 +3288,7 @@
rb_sys_fail(fptr->path);
}
}
+ exit:
#endif
return INT2FIX(0);
}
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/