vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Sep  6 
09:56:01 2017 +0200| [b7f22b7873005ce26a9f1f94447365a2bde9e00d] | committer: 
Francois Cartegnie

demux: playlist: xspf: check depth when skipping

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b7f22b7873005ce26a9f1f94447365a2bde9e00d
---

 modules/demux/playlist/xspf.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/modules/demux/playlist/xspf.c b/modules/demux/playlist/xspf.c
index af15cf16f0..2058c5b401 100644
--- a/modules/demux/playlist/xspf.c
+++ b/modules/demux/playlist/xspf.c
@@ -809,13 +809,13 @@ static bool parse_extitem_node COMPLEX_INTERFACE
 static bool skip_element COMPLEX_INTERFACE
 {
     VLC_UNUSED(p_demux); VLC_UNUSED(p_input_node);
-    VLC_UNUSED(psz_element);
 
     if(b_empty_node)
         return true;
 
+    const char *name;
     for (unsigned lvl = 1; lvl;)
-        switch (xml_ReaderNextNode(p_xml_reader, NULL))
+        switch (xml_ReaderNextNode(p_xml_reader, &name))
         {
             case XML_READER_STARTELEM:
             {
@@ -824,6 +824,13 @@ static bool skip_element COMPLEX_INTERFACE
                 break;
             }
             case XML_READER_ENDELEM:
+                if(lvl == 0)
+                {
+                    if(name && psz_element && strcmp(psz_element, name))
+                        return false;
+                    else
+                        return true;
+                }
                 lvl--;
                 break;
             case XML_READER_NONE:

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to