{"record":{"id":"1fc8f190f0b352c5","repo":"MuntashirAkon/AppManager","slug":"not-applicable-for-token-mcurrenttoken","errorCode":null,"errorMessage":"Not applicable for token ${mCurrentToken}","messagePattern":"Not applicable for token (.+?)","errorType":"exception","errorClass":"org.xmlpull.v1.XmlPullParserException","httpStatus":null,"severity":"error","filePath":"libcore/compat/src/main/java/io/github/muntashirakon/compat/xml/BinaryXmlPullParser.java","lineNumber":533,"sourceCode":"    public int getLineNumber() {\n        return -1;\n    }\n\n    @Override\n    public int getColumnNumber() {\n        return -1;\n    }\n\n    @Override\n    public boolean isWhitespace() throws XmlPullParserException {\n        switch (mCurrentToken) {\n            case IGNORABLE_WHITESPACE:\n                return true;\n            case TEXT:\n            case CDSECT:\n                return !TextUtils.isGraphic(mCurrentText);\n            default:\n                throw new XmlPullParserException(\"Not applicable for token \" + mCurrentToken);\n        }\n    }\n\n    @Override\n    public String getNamespace() {\n        switch (mCurrentToken) {\n            case START_TAG:\n            case END_TAG:\n                // Namespaces are unsupported\n                return NO_NAMESPACE;\n            default:\n                return null;\n        }\n    }\n\n    @Override\n    public String getName() {\n        return mCurrentName;","sourceCodeStart":515,"sourceCodeEnd":551,"githubUrl":"https://github.com/MuntashirAkon/AppManager/blob/0152f468fc9463ee02dc2ca83f6fe4989a2c4ca5/libcore/compat/src/main/java/io/github/muntashirakon/compat/xml/BinaryXmlPullParser.java#L515-L551","documentation":"XmlPullParserException from isWhitespace() when the current token is not TEXT, CDSECT, or IGNORABLE_WHITESPACE — whitespace relevance is only defined for text-like tokens. The message reports the offending token number.","triggerScenarios":"Calling isWhitespace() while positioned on START_TAG, END_TAG, START_DOCUMENT, END_DOCUMENT, or COMMENT; indirectly from nextTag() only if TEXT/CDSECT — direct calls with other current tokens throw immediately.","commonSituations":"Calling isWhitespace() without checking getEventType() first; custom token loops that call it unconditionally for every token; porting code that assumed KXmlParser's more permissive behavior.","solutions":["Only call isWhitespace() when getEventType() is TEXT, CDSECT, or IGNORABLE_WHITESPACE","Guard with an event-type check and return false for other tokens","In nextTag()-style loops, the TEXT branch is safe — avoid calling it elsewhere","Log mCurrentToken from the exception message to identify the state bug"],"exampleFix":"// before\nboolean ws = parser.isWhitespace();\n// after\nint ev = parser.getEventType();\nboolean ws = (ev == XmlPullParser.TEXT || ev == XmlPullParser.CDSECT || ev == XmlPullParser.IGNORABLE_WHITESPACE)\n        && parser.isWhitespace();","handlingStrategy":"validation","validationCode":"int ev = parser.getEventType();\nboolean textLike = (ev == XmlPullParser.TEXT || ev == XmlPullParser.CDSECT || ev == XmlPullParser.IGNORABLE_WHITESPACE);\nif (!textLike) return false;","typeGuard":"static boolean isTextLikeEvent(int ev) { return ev == XmlPullParser.TEXT || ev == XmlPullParser.CDSECT || ev == XmlPullParser.IGNORABLE_WHITESPACE; }","tryCatchPattern":"try { ws = parser.isWhitespace(); } catch (XmlPullParserException e) { ws = false; // current token is not text-like }","preventionTips":["Gate isWhitespace() behind an event-type check","Do not call it inside generic token loops","Read the offending token number from the exception message"],"tags":["xml","parser","binary-xml","invalid-state"],"backgroundTag":"invalid-state-transition","analyzedSha":"0152f468fc9463ee02dc2ca83f6fe4989a2c4ca5","analyzedAt":"2026-09-12T14:03:37.243Z","contentChangedAt":"2026-09-12T14:03:37.243Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}