Catch Java exceptions in the FileObserver JNI code
Change-Id: I8aed85baadef7a3ea80333b33df0743e0d349915 BUG: 2404428 Signed-off-by: Mike Lockwood <lockwood@android.com>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user