summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@google.com>2010-02-18 07:47:53 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-02-18 07:47:53 -0800
commit6f760ee1c232b39a5593dd0a53f0788c6700ee68 (patch)
tree2c7fc2546696b984cd4a6eba4879e77244b7deaf
parent4b9f74a2d3bd9672ec392b657eedefb31cd5b516 (diff)
parent59d25d00a17cc41d3b4416f9c90b29fe8e349645 (diff)
downloadframeworks_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.cpp28
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