Ignore:
Timestamp:
Jul 26, 2011, 1:36:30 AM (10 years ago)
Author:
livings124
Message:

#4387 Update miniupnpc to 1.6

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/third-party/miniupnp/minixml.c

    r9282 r12593  
    1 /* $Id: minixml.c,v 1.7 2009/10/10 19:15:35 nanard Exp $ */
     1/* $Id: minixml.c,v 1.9 2011/02/07 13:44:57 nanard Exp $ */
    22/* minixml.c : the minimum size a xml parser can be ! */
    33/* Project : miniupnp
     
    55 * Author : Thomas Bernard
    66
    7 Copyright (c) 2005-2009, Thomas BERNARD
     7Copyright (c) 2005-2011, Thomas BERNARD
    88All rights reserved.
    99
     
    3131POSSIBILITY OF SUCH DAMAGE.
    3232*/
     33#include <string.h>
    3334#include "minixml.h"
    3435
     
    144145                                        while( IS_WHITE_SPACE(*p->xml) )
    145146                                        {
    146                                                 p->xml++;
    147                                                 if (p->xml >= p->xmlend)
    148                                                         return;
    149                                         }
    150                                         while(*p->xml!='<')
    151                                         {
    152147                                                i++; p->xml++;
    153148                                                if (p->xml >= p->xmlend)
    154149                                                        return;
    155150                                        }
    156                                         if(i>0 && p->datafunc)
    157                                                 p->datafunc(p->data, data, i);
     151                                        if(memcmp(p->xml, "<![CDATA[", 9) == 0)
     152                                        {
     153                                                /* CDATA handling */
     154                                                p->xml += 9;
     155                                                data = p->xml;
     156                                                i = 0;
     157                                                while(memcmp(p->xml, "]]>", 3) != 0)
     158                                                {
     159                                                        i++; p->xml++;
     160                                                        if ((p->xml + 3) >= p->xmlend)
     161                                                                return;
     162                                                }
     163                                                if(i>0 && p->datafunc)
     164                                                        p->datafunc(p->data, data, i);
     165                                                while(*p->xml!='<')
     166                                                {
     167                                                        p->xml++;
     168                                                        if (p->xml >= p->xmlend)
     169                                                                return;
     170                                                }
     171                                        }
     172                                        else
     173                                        {
     174                                                while(*p->xml!='<')
     175                                                {
     176                                                        i++; p->xml++;
     177                                                        if ((p->xml + 1) >= p->xmlend)
     178                                                                return;
     179                                                }
     180                                                if(i>0 && p->datafunc && *(p->xml + 1) == '/')
     181                                                        p->datafunc(p->data, data, i);
     182                                        }
    158183                                }
    159184                        }
Note: See TracChangeset for help on using the changeset viewer.