aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/natObject.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/natObject.cc')
-rw-r--r--libjava/java/lang/natObject.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/libjava/java/lang/natObject.cc b/libjava/java/lang/natObject.cc
index 47b88a8..25b2966 100644
--- a/libjava/java/lang/natObject.cc
+++ b/libjava/java/lang/natObject.cc
@@ -198,11 +198,15 @@ java::lang::Object::wait (jlong timeout, jint nanos)
if (timeout < 0 || nanos < 0 || nanos > 999999)
JvThrow (new IllegalArgumentException);
_Jv_SyncInfo *si = (_Jv_SyncInfo *) sync_info;
- if (_Jv_CondWait (&si->condition, &si->mutex, timeout, nanos))
- JvThrow (new IllegalMonitorStateException(JvNewStringLatin1
- ("current thread not owner")));
- if (Thread::interrupted())
- JvThrow (new InterruptedException);
+ switch (_Jv_CondWait (&si->condition, &si->mutex, timeout, nanos))
+ {
+ case _JV_NOT_OWNER:
+ JvThrow (new IllegalMonitorStateException (JvNewStringLatin1
+ ("current thread not owner")));
+ case _JV_INTERRUPTED:
+ if (Thread::interrupted ())
+ JvThrow (new InterruptedException);
+ }
}
//