diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-23 12:18:44 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-23 12:18:44 +0000 |
commit | ef8f24d06ebb9a4c4964d265d9be459249efc9ac (patch) | |
tree | 59cdbb9b0192c261e73ef9677165619404380e5d | |
parent | e7ec68a456b57365e32cb519a48287ecd6dcca04 (diff) |
merges r27930 from trunk into ruby_1_9_2.
--
* thread.c (subtract_tv): if the rest is zero, should finish waiting
immediately.
* win32/win32.c (subtract): ditto.
based on a patch from Roger Pack in [ruby-core:27957].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@27975 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | thread.c | 5 | ||||
-rw-r--r-- | win32/win32.c | 2 |
3 files changed, 13 insertions, 2 deletions
@@ -1,3 +1,11 @@ +Fri May 21 01:06:05 2010 NAKAMURA Usaku <usa@ruby-lang.org> + + * thread.c (subtract_tv): if the rest is zero, should finish waiting + immediately. + + * win32/win32.c (subtract): ditto. + based on a patch from Roger Pack in [ruby-core:27957]. + Thu May 20 22:49:04 2010 Yusuke Endoh <mame@tsg.ne.jp> * re.c (rb_reg_s_union_m): update rdoc. [ruby-dev:41354] @@ -2411,6 +2411,9 @@ cmp_tv(const struct timeval *a, const struct timeval *b) static int subtract_tv(struct timeval *rest, const struct timeval *wait) { + if (rest->tv_sec < wait->tv_sec) { + return 0; + } while (rest->tv_usec < wait->tv_usec) { if (rest->tv_sec <= wait->tv_sec) { return 0; @@ -2420,7 +2423,7 @@ subtract_tv(struct timeval *rest, const struct timeval *wait) } rest->tv_sec -= wait->tv_sec; rest->tv_usec -= wait->tv_usec; - return 1; + return rest->tv_sec != 0 || rest->tv_usec != 0; } #endif diff --git a/win32/win32.c b/win32/win32.c index b60ea8cadd..bd4aa3ce30 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -2467,7 +2467,7 @@ subtract(struct timeval *rest, const struct timeval *wait) } rest->tv_sec -= wait->tv_sec; rest->tv_usec -= wait->tv_usec; - return 1; + return rest->tv_sec != 0 || rest->tv_usec != 0; } static inline int |