diff --git a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java index dcca431ea7544..c24d31334be00 100644 --- a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java +++ b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java @@ -455,7 +455,11 @@ public class AnimatedVectorDrawable extends Drawable implements Animatable2 { int eventType = parser.getEventType(); float pathErrorScale = 1; - while (eventType != XmlPullParser.END_DOCUMENT) { + final int innerDepth = parser.getDepth() + 1; + + // Parse everything until the end of the animated-vector element. + while (eventType != XmlPullParser.END_DOCUMENT + && (parser.getDepth() >= innerDepth || eventType != XmlPullParser.END_TAG)) { if (eventType == XmlPullParser.START_TAG) { final String tagName = parser.getName(); if (ANIMATED_VECTOR.equals(tagName)) { diff --git a/graphics/java/android/graphics/drawable/VectorDrawable.java b/graphics/java/android/graphics/drawable/VectorDrawable.java index 9cb7a2bfbfa02..1ca15525c8a1a 100644 --- a/graphics/java/android/graphics/drawable/VectorDrawable.java +++ b/graphics/java/android/graphics/drawable/VectorDrawable.java @@ -744,7 +744,11 @@ public class VectorDrawable extends Drawable { groupStack.push(state.mRootGroup); int eventType = parser.getEventType(); - while (eventType != XmlPullParser.END_DOCUMENT) { + final int innerDepth = parser.getDepth() + 1; + + // Parse everything until the end of the vector element. + while (eventType != XmlPullParser.END_DOCUMENT + && (parser.getDepth() >= innerDepth || eventType != XmlPullParser.END_TAG)) { if (eventType == XmlPullParser.START_TAG) { final String tagName = parser.getName(); final VGroup currentGroup = groupStack.peek();