You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
XmlBlock: nativeNext: properly skip certain tags, throw exception for BAD_DOCUMENT
This commit is contained in:
@@ -15,10 +15,26 @@ JNIEXPORT jlong JNICALL Java_android_content_res_XmlBlock_nativeCreateParseState
|
|||||||
JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeNext(JNIEnv *env, jobject this, jlong parser_ptr)
|
JNIEXPORT jint JNICALL Java_android_content_res_XmlBlock_nativeNext(JNIEnv *env, jobject this, jlong parser_ptr)
|
||||||
{
|
{
|
||||||
struct ResXMLParser *parser = (struct ResXMLParser *)_PTR(parser_ptr);
|
struct ResXMLParser *parser = (struct ResXMLParser *)_PTR(parser_ptr);
|
||||||
enum event_code_t ret = ResXMLParser_next(parser);
|
while (1) {
|
||||||
if (ret > 0x100)
|
enum event_code_t code = ResXMLParser_next(parser);
|
||||||
return ret - 0x100;
|
switch (code) {
|
||||||
return ret;
|
case START_TAG:
|
||||||
|
case END_TAG:
|
||||||
|
case TEXT:
|
||||||
|
return code - 0x100;
|
||||||
|
|
||||||
|
case START_DOCUMENT:
|
||||||
|
case END_DOCUMENT:
|
||||||
|
return code;
|
||||||
|
|
||||||
|
case BAD_DOCUMENT:
|
||||||
|
(*env)->ThrowNew(env, (*env)->FindClass(env, "org/xmlpull/v1/XmlPullParserException"), "ResXMLParser_next returned BAD_DOCUMENT");
|
||||||
|
return code;
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jstring JNICALL Java_android_content_res_XmlBlock_nativeGetPooledString(JNIEnv *env, jobject this, jlong parser_ptr, jint index)
|
JNIEXPORT jstring JNICALL Java_android_content_res_XmlBlock_nativeGetPooledString(JNIEnv *env, jobject this, jlong parser_ptr, jint index)
|
||||||
|
|||||||
Reference in New Issue
Block a user