diff options
author | Mike Lockwood <lockwood@google.com> | 2010-02-18 07:47:53 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-02-18 07:47:53 -0800 |
commit | 6f760ee1c232b39a5593dd0a53f0788c6700ee68 (patch) | |
tree | 2c7fc2546696b984cd4a6eba4879e77244b7deaf | |
parent | 4b9f74a2d3bd9672ec392b657eedefb31cd5b516 (diff) | |
parent | 59d25d00a17cc41d3b4416f9c90b29fe8e349645 (diff) | |
download | frameworks_base-6f760ee1c232b39a5593dd0a53f0788c6700ee68.zip frameworks_base-6f760ee1c232b39a5593dd0a53f0788c6700ee68.tar.gz frameworks_base-6f760ee1c232b39a5593dd0a53f0788c6700ee68.tar.bz2 |
Merge "Catch Java exceptions in the FileObserver JNI code"
-rw-r--r-- | core/jni/android_util_FileObserver.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/core/jni/android_util_FileObserver.cpp b/core/jni/android_util_FileObserver.cpp index 13a1645..65e7130 100644 --- a/core/jni/android_util_FileObserver.cpp +++ b/core/jni/android_util_FileObserver.cpp @@ -71,28 +71,32 @@ static void android_os_fileobserver_observe(JNIEnv* env, jobject object, jint fd return; } - while (num_bytes >= (int)sizeof(*event)) - { - int event_size; - event = (struct inotify_event *)(event_buf + event_pos); - + while (num_bytes >= (int)sizeof(*event)) + { + int event_size; + event = (struct inotify_event *)(event_buf + event_pos); + jstring path = NULL; if (event->len > 0) { path = env->NewStringUTF(event->name); } - - env->CallVoidMethod(object, method_onEvent, event->wd, event->mask, path); + + env->CallVoidMethod(object, method_onEvent, event->wd, event->mask, path); + if (env->ExceptionCheck()) { + env->ExceptionDescribe(); + env->ExceptionClear(); + } if (path != NULL) { env->DeleteLocalRef(path); } - - event_size = sizeof(*event) + event->len; - num_bytes -= event_size; - event_pos += event_size; - } + + event_size = sizeof(*event) + event->len; + num_bytes -= event_size; + event_pos += event_size; + } } #endif // HAVE_INOTIFY |