| 8410 | } |
| 8411 | |
| 8412 | static ELEMENT_TYPE * |
| 8413 | getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, |
| 8414 | const char *end) { |
| 8415 | DTD *const dtd = parser->m_dtd; /* save one level of indirection */ |
| 8416 | const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); |
| 8417 | ELEMENT_TYPE *ret; |
| 8418 | |
| 8419 | if (! name) |
| 8420 | return NULL; |
| 8421 | ret = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, |
| 8422 | sizeof(ELEMENT_TYPE)); |
| 8423 | if (! ret) |
| 8424 | return NULL; |
| 8425 | if (ret->name != name) |
| 8426 | poolDiscard(&dtd->pool); |
| 8427 | else { |
| 8428 | poolFinish(&dtd->pool); |
| 8429 | if (! setElementTypePrefix(parser, ret)) |
| 8430 | return NULL; |
| 8431 | } |
| 8432 | return ret; |
| 8433 | } |
| 8434 | |
| 8435 | static XML_Char * |
| 8436 | copyString(const XML_Char *s, XML_Parser parser) { |
no test coverage detected
searching dependent graphs…