MCPcopy Create free account
hub / github.com/Kitware/VTK / xmlParseStringCharRef

Function xmlParseStringCharRef

ThirdParty/libxml2/vtklibxml2/parser.c:2702–2776  ·  view source on GitHub ↗

* xmlParseStringCharRef: * @ctxt: an XML parser context * @str: a pointer to an index in the string * * parse Reference declarations, variant parsing from a string rather * than an an input flow. * * [66] CharRef ::= '&#' [0-9]+ ';' | * '&#x' [0-9a-fA-F]+ ';' * * [ WFC: Legal Character ] * Characters referred to using character references must match the * production

Source from the content-addressed store, hash-verified

2700 * updated to the current value of the index
2701 */
2702static int
2703xmlParseStringCharRef(xmlParserCtxtPtr ctxt, const xmlChar **str) {
2704 const xmlChar *ptr;
2705 xmlChar cur;
2706 int val = 0;
2707
2708 if ((str == NULL) || (*str == NULL)) return(0);
2709 ptr = *str;
2710 cur = *ptr;
2711 if ((cur == '&') && (ptr[1] == '#') && (ptr[2] == 'x')) {
2712 ptr += 3;
2713 cur = *ptr;
2714 while (cur != ';') { /* Non input consuming loop */
2715 if ((cur >= '0') && (cur <= '9'))
2716 val = val * 16 + (cur - '0');
2717 else if ((cur >= 'a') && (cur <= 'f'))
2718 val = val * 16 + (cur - 'a') + 10;
2719 else if ((cur >= 'A') && (cur <= 'F'))
2720 val = val * 16 + (cur - 'A') + 10;
2721 else {
2722 xmlFatalErr(ctxt, XML_ERR_INVALID_HEX_CHARREF, NULL);
2723 val = 0;
2724 break;
2725 }
2726 if (val > 0x110000)
2727 val = 0x110000;
2728
2729 ptr++;
2730 cur = *ptr;
2731 }
2732 if (cur == ';')
2733 ptr++;
2734 } else if ((cur == '&') && (ptr[1] == '#')){
2735 ptr += 2;
2736 cur = *ptr;
2737 while (cur != ';') { /* Non input consuming loops */
2738 if ((cur >= '0') && (cur <= '9'))
2739 val = val * 10 + (cur - '0');
2740 else {
2741 xmlFatalErr(ctxt, XML_ERR_INVALID_DEC_CHARREF, NULL);
2742 val = 0;
2743 break;
2744 }
2745 if (val > 0x110000)
2746 val = 0x110000;
2747
2748 ptr++;
2749 cur = *ptr;
2750 }
2751 if (cur == ';')
2752 ptr++;
2753 } else {
2754 xmlFatalErr(ctxt, XML_ERR_INVALID_CHARREF, NULL);
2755 return(0);
2756 }
2757 *str = ptr;
2758
2759 /*

Callers 3

xmlCheckEntityInAttValueFunction · 0.85

Calls 1

xmlFatalErrFunction · 0.85

Tested by

no test coverage detected