modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/pr52306.c (about)

     1  /* PR middle-end/52306 */
     2  
     3  struct xmlNs {
     4      const unsigned char *prefix;
     5  };
     6  
     7  struct xmlNode {
     8      const unsigned char *name;
     9      struct xmlNs *ns;
    10      struct xmlNs *nsDef;
    11  };
    12  
    13  struct xsltTemplate {
    14      const unsigned char *name;
    15      int inheritedNsNr;
    16      void *inheritedNs;
    17  };
    18  
    19  struct xsltTemplate *xsltNewTemplate(void);
    20  void xsltGetQNameURI(unsigned char**);
    21  long xmlMalloc(unsigned long);
    22  void xsltGenericDebug(void);
    23  int xmlStrEqual(const unsigned char*, const unsigned char*);
    24  
    25  static void xsltGetInheritedNsList(
    26      struct xsltTemplate *template,
    27      struct xmlNode *node)
    28  {
    29      struct xmlNs *cur;
    30      struct xmlNs **ret;
    31      int nbns = 0;
    32      int maxns = 10;
    33      int i;
    34  
    35      if (template == 0
    36  	|| template->inheritedNsNr != 0
    37  	|| template->inheritedNs != 0)
    38  	return;
    39  
    40      while (node != 0) {
    41  	cur = node->nsDef;
    42  	ret = (struct xmlNs**) xmlMalloc((maxns + 1) * sizeof(struct xmlNs*));
    43  	for (i = 0; i < nbns; i++)
    44  	    if (cur->prefix == ret[i]->prefix
    45  		|| xmlStrEqual(cur->prefix, 0))
    46  		break;
    47  
    48  	if (i >= nbns) {
    49  	    if (nbns >= maxns)
    50  		return;
    51  	    ret[nbns++] = cur;
    52  	}
    53      }
    54  }
    55  
    56  static void
    57  xsltParseStylesheetTemplate(struct xmlNode *template)
    58  {
    59      struct xsltTemplate *ret;
    60      unsigned char *prop;
    61  
    62      ret = xsltNewTemplate();
    63      if (ret == 0)
    64  	return;
    65      xsltGetInheritedNsList(ret, template);
    66      xsltGenericDebug();
    67      xsltGetQNameURI(&prop);
    68      xmlStrEqual(0, ret->name);
    69  }
    70  
    71  void xsltParseStylesheetTop(struct xmlNode *cur)
    72  {
    73      xmlStrEqual(0, 0);
    74  
    75      while (cur != 0) {
    76  	if (xmlStrEqual(cur->name, 0))
    77  	    ;
    78  	else if (xmlStrEqual(cur->name, 0))
    79  	    ;
    80  	else if (xmlStrEqual(cur->name, 0))
    81  	    xsltParseStylesheetTemplate(cur);
    82      }
    83  }
    84