summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-14 11:31:37 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-14 11:31:37 +0000
commit262c620e90c6f88430c10ef92ee07958085633d3 (patch)
tree69c13e53ad7000f9d96de373a7777397de557b6b
parent4fffacd9a51227cf043873d5ac3e961a2ed0a2f5 (diff)
merge revision(s) 23202,23268,23305:
* eval.c (safe_mutex_lock): pthread_cleanup_push() must not be inside parens. * eval.c (rb_thread_start_timer): guard condition was inverted. [ruby-dev:38319] * eval.c (get_ts): use readtime clock. [ruby-dev:38354] * eval.c (rb_thread_stop_timer): clear thread_init while locking. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@24104 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog16
-rw-r--r--eval.c12
-rw-r--r--version.h8
3 files changed, 26 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index b67927fe92..ece712f86b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+Tue Jul 14 19:57:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (get_ts): use readtime clock. [ruby-dev:38354]
+
+ * eval.c (rb_thread_stop_timer): clear thread_init while locking.
+
+Tue Jul 14 19:57:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_thread_start_timer): guard condition was inverted.
+ [ruby-dev:38319]
+
+Tue Jul 14 19:57:28 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (safe_mutex_lock): pthread_cleanup_push() must not be
+ inside parens.
+
Mon Jul 13 01:36:54 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* time.c (time_timeval): rounds subsecond toward zero.
diff --git a/eval.c b/eval.c
index 8ae0d3f746..ab5a4f4a93 100644
--- a/eval.c
+++ b/eval.c
@@ -12252,8 +12252,8 @@ get_ts(struct timespec *to, long ns)
{
struct timeval tv;
-#ifdef CLOCK_MONOTONIC
- if (clock_gettime(CLOCK_MONOTONIC, to) != 0)
+#ifdef CLOCK_REALTIME
+ if (clock_gettime(CLOCK_REALTIME, to) != 0)
#endif
{
gettimeofday(&tv, NULL);
@@ -12274,8 +12274,8 @@ static struct timer_thread {
} time_thread = {PTHREAD_COND_INITIALIZER, PTHREAD_MUTEX_INITIALIZER};
#define safe_mutex_lock(lock) \
- (pthread_mutex_lock(lock), \
- pthread_cleanup_push((void (*)_((void *)))pthread_mutex_unlock, lock))
+ pthread_mutex_lock(lock); \
+ pthread_cleanup_push((void (*)_((void *)))pthread_mutex_unlock, lock)
static void*
thread_timer(dummy)
@@ -12316,7 +12316,7 @@ rb_thread_start_timer()
void *args[2];
static pthread_cond_t start = PTHREAD_COND_INITIALIZER;
- if (!thread_init) return;
+ if (thread_init) return;
args[0] = &time_thread;
args[1] = &start;
safe_mutex_lock(&time_thread.lock);
@@ -12334,9 +12334,9 @@ rb_thread_stop_timer()
if (!thread_init) return;
safe_mutex_lock(&time_thread.lock);
pthread_cond_signal(&time_thread.cond);
+ thread_init = 0;
pthread_cleanup_pop(1);
pthread_join(time_thread.thread, NULL);
- thread_init = 0;
}
#elif defined(HAVE_SETITIMER)
static void
diff --git a/version.h b/version.h
index 5bba3f1321..9e3d37f1f9 100644
--- a/version.h
+++ b/version.h
@@ -1,15 +1,15 @@
#define RUBY_VERSION "1.8.7"
-#define RUBY_RELEASE_DATE "2009-07-13"
+#define RUBY_RELEASE_DATE "2009-07-14"
#define RUBY_VERSION_CODE 187
-#define RUBY_RELEASE_CODE 20090713
-#define RUBY_PATCHLEVEL 182
+#define RUBY_RELEASE_CODE 20090714
+#define RUBY_PATCHLEVEL 183
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8
#define RUBY_VERSION_TEENY 7
#define RUBY_RELEASE_YEAR 2009
#define RUBY_RELEASE_MONTH 7
-#define RUBY_RELEASE_DAY 13
+#define RUBY_RELEASE_DAY 14
#ifdef RUBY_EXTERN
RUBY_EXTERN const char ruby_version[];