From 867c514fe58cb368bae02a8ffeb3081dfebbb2aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Mon, 25 Jul 2022 21:31:24 +0200 Subject: [PATCH] Declare ext/xml constants in stubs (#9131) --- ext/xml/php_xml.h | 7 +++ ext/xml/xml.c | 36 +----------- ext/xml/xml.stub.php | 132 ++++++++++++++++++++++++++++++++++++++++++ ext/xml/xml_arginfo.h | 32 +++++++++- 4 files changed, 171 insertions(+), 36 deletions(-) diff --git a/ext/xml/php_xml.h b/ext/xml/php_xml.h index 010f18e668c..239028f71fd 100644 --- a/ext/xml/php_xml.h +++ b/ext/xml/php_xml.h @@ -39,4 +39,11 @@ extern zend_module_entry xml_module_entry; #define phpext_xml_ptr xml_module_ptr +enum php_xml_option { + PHP_XML_OPTION_CASE_FOLDING = 1, + PHP_XML_OPTION_TARGET_ENCODING, + PHP_XML_OPTION_SKIP_TAGSTART, + PHP_XML_OPTION_SKIP_WHITE +}; + #endif /* PHP_XML_H */ diff --git a/ext/xml/xml.c b/ext/xml/xml.c index 3753320dd01..c3bfa37169b 100644 --- a/ext/xml/xml.c +++ b/ext/xml/xml.c @@ -121,14 +121,6 @@ typedef struct { unsigned short (*encoding_function)(unsigned char); } xml_encoding; - -enum php_xml_option { - PHP_XML_OPTION_CASE_FOLDING = 1, - PHP_XML_OPTION_TARGET_ENCODING, - PHP_XML_OPTION_SKIP_TAGSTART, - PHP_XML_OPTION_SKIP_WHITE -}; - /* {{{ dynamically loadable module stuff */ #ifdef COMPILE_DL_XML #ifdef ZTS @@ -262,33 +254,7 @@ PHP_MINIT_FUNCTION(xml) xml_parser_object_handlers.clone_obj = NULL; xml_parser_object_handlers.compare = zend_objects_not_comparable; - REGISTER_LONG_CONSTANT("XML_ERROR_NONE", XML_ERROR_NONE, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_NO_MEMORY", XML_ERROR_NO_MEMORY, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_SYNTAX", XML_ERROR_SYNTAX, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_NO_ELEMENTS", XML_ERROR_NO_ELEMENTS, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_INVALID_TOKEN", XML_ERROR_INVALID_TOKEN, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_TOKEN", XML_ERROR_UNCLOSED_TOKEN, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_PARTIAL_CHAR", XML_ERROR_PARTIAL_CHAR, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_TAG_MISMATCH", XML_ERROR_TAG_MISMATCH, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_DUPLICATE_ATTRIBUTE", XML_ERROR_DUPLICATE_ATTRIBUTE, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_JUNK_AFTER_DOC_ELEMENT", XML_ERROR_JUNK_AFTER_DOC_ELEMENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_PARAM_ENTITY_REF", XML_ERROR_PARAM_ENTITY_REF, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_UNDEFINED_ENTITY", XML_ERROR_UNDEFINED_ENTITY, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_RECURSIVE_ENTITY_REF", XML_ERROR_RECURSIVE_ENTITY_REF, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_ASYNC_ENTITY", XML_ERROR_ASYNC_ENTITY, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_BAD_CHAR_REF", XML_ERROR_BAD_CHAR_REF, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_BINARY_ENTITY_REF", XML_ERROR_BINARY_ENTITY_REF, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF", XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_MISPLACED_XML_PI", XML_ERROR_MISPLACED_XML_PI, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_UNKNOWN_ENCODING", XML_ERROR_UNKNOWN_ENCODING, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_INCORRECT_ENCODING", XML_ERROR_INCORRECT_ENCODING, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_CDATA_SECTION", XML_ERROR_UNCLOSED_CDATA_SECTION, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_EXTERNAL_ENTITY_HANDLING", XML_ERROR_EXTERNAL_ENTITY_HANDLING, CONST_CS|CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("XML_OPTION_CASE_FOLDING", PHP_XML_OPTION_CASE_FOLDING, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_OPTION_TARGET_ENCODING", PHP_XML_OPTION_TARGET_ENCODING, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_TAGSTART", PHP_XML_OPTION_SKIP_TAGSTART, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_WHITE", PHP_XML_OPTION_SKIP_WHITE, CONST_CS|CONST_PERSISTENT); + register_xml_symbols(module_number); /* this object should not be pre-initialised at compile time, as the order of members may vary */ diff --git a/ext/xml/xml.stub.php b/ext/xml/xml.stub.php index 9ab31ced425..9a1f13fa16c 100644 --- a/ext/xml/xml.stub.php +++ b/ext/xml/xml.stub.php @@ -2,6 +2,138 @@ /** @generate-class-entries */ +/** + * @var int + * @cvalue XML_ERROR_NONE + */ +const XML_ERROR_NONE = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_NO_MEMORY + */ +const XML_ERROR_NO_MEMORY = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_SYNTAX + */ +const XML_ERROR_SYNTAX = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_NO_ELEMENTS + */ +const XML_ERROR_NO_ELEMENTS = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_INVALID_TOKEN + */ +const XML_ERROR_INVALID_TOKEN = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_UNCLOSED_TOKEN + */ +const XML_ERROR_UNCLOSED_TOKEN = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_PARTIAL_CHAR + */ +const XML_ERROR_PARTIAL_CHAR = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_TAG_MISMATCH + */ +const XML_ERROR_TAG_MISMATCH = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_DUPLICATE_ATTRIBUTE + */ +const XML_ERROR_DUPLICATE_ATTRIBUTE = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_JUNK_AFTER_DOC_ELEMENT + */ +const XML_ERROR_JUNK_AFTER_DOC_ELEMENT = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_PARAM_ENTITY_REF + */ +const XML_ERROR_PARAM_ENTITY_REF = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_UNDEFINED_ENTITY + */ +const XML_ERROR_UNDEFINED_ENTITY = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_RECURSIVE_ENTITY_REF + */ +const XML_ERROR_RECURSIVE_ENTITY_REF = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_ASYNC_ENTITY + */ +const XML_ERROR_ASYNC_ENTITY = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_BAD_CHAR_REF + */ +const XML_ERROR_BAD_CHAR_REF = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_BINARY_ENTITY_REF + */ +const XML_ERROR_BINARY_ENTITY_REF = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF + */ +const XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_MISPLACED_XML_PI + */ +const XML_ERROR_MISPLACED_XML_PI = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_UNKNOWN_ENCODING + */ +const XML_ERROR_UNKNOWN_ENCODING = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_INCORRECT_ENCODING + */ +const XML_ERROR_INCORRECT_ENCODING = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_UNCLOSED_CDATA_SECTION + */ +const XML_ERROR_UNCLOSED_CDATA_SECTION = UNKNOWN; +/** + * @var int + * @cvalue XML_ERROR_EXTERNAL_ENTITY_HANDLING + */ +const XML_ERROR_EXTERNAL_ENTITY_HANDLING = UNKNOWN; + +/** + * @var int + * @cvalue PHP_XML_OPTION_CASE_FOLDING + */ +const XML_OPTION_CASE_FOLDING = UNKNOWN; +/** + * @var int + * @cvalue PHP_XML_OPTION_TARGET_ENCODING + */ +const XML_OPTION_TARGET_ENCODING = UNKNOWN; +/** + * @var int + * @cvalue PHP_XML_OPTION_SKIP_TAGSTART + */ +const XML_OPTION_SKIP_TAGSTART = UNKNOWN; +/** + * @var int + * @cvalue PHP_XML_OPTION_SKIP_WHITE + */ +const XML_OPTION_SKIP_WHITE = UNKNOWN; + function xml_parser_create(?string $encoding = null): XMLParser {} function xml_parser_create_ns(?string $encoding = null, string $separator = ":"): XMLParser {} diff --git a/ext/xml/xml_arginfo.h b/ext/xml/xml_arginfo.h index 9afd9713305..8fcf41b03ea 100644 --- a/ext/xml/xml_arginfo.h +++ b/ext/xml/xml_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 19ecc0e3b7a82f8b992a311788919154cdb28a5d */ + * Stub hash: 97b941147b54b4e1cd3d8fff2cba8a43a3065aad */ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_xml_parser_create, 0, 0, XMLParser, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, encoding, IS_STRING, 1, "null") @@ -138,6 +138,36 @@ static const zend_function_entry class_XMLParser_methods[] = { ZEND_FE_END }; +static void register_xml_symbols(int module_number) +{ + REGISTER_LONG_CONSTANT("XML_ERROR_NONE", XML_ERROR_NONE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_NO_MEMORY", XML_ERROR_NO_MEMORY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_SYNTAX", XML_ERROR_SYNTAX, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_NO_ELEMENTS", XML_ERROR_NO_ELEMENTS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_INVALID_TOKEN", XML_ERROR_INVALID_TOKEN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_TOKEN", XML_ERROR_UNCLOSED_TOKEN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_PARTIAL_CHAR", XML_ERROR_PARTIAL_CHAR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_TAG_MISMATCH", XML_ERROR_TAG_MISMATCH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_DUPLICATE_ATTRIBUTE", XML_ERROR_DUPLICATE_ATTRIBUTE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_JUNK_AFTER_DOC_ELEMENT", XML_ERROR_JUNK_AFTER_DOC_ELEMENT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_PARAM_ENTITY_REF", XML_ERROR_PARAM_ENTITY_REF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_UNDEFINED_ENTITY", XML_ERROR_UNDEFINED_ENTITY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_RECURSIVE_ENTITY_REF", XML_ERROR_RECURSIVE_ENTITY_REF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_ASYNC_ENTITY", XML_ERROR_ASYNC_ENTITY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_BAD_CHAR_REF", XML_ERROR_BAD_CHAR_REF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_BINARY_ENTITY_REF", XML_ERROR_BINARY_ENTITY_REF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF", XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_MISPLACED_XML_PI", XML_ERROR_MISPLACED_XML_PI, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_UNKNOWN_ENCODING", XML_ERROR_UNKNOWN_ENCODING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_INCORRECT_ENCODING", XML_ERROR_INCORRECT_ENCODING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_CDATA_SECTION", XML_ERROR_UNCLOSED_CDATA_SECTION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_EXTERNAL_ENTITY_HANDLING", XML_ERROR_EXTERNAL_ENTITY_HANDLING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_OPTION_CASE_FOLDING", PHP_XML_OPTION_CASE_FOLDING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_OPTION_TARGET_ENCODING", PHP_XML_OPTION_TARGET_ENCODING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_TAGSTART", PHP_XML_OPTION_SKIP_TAGSTART, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_WHITE", PHP_XML_OPTION_SKIP_WHITE, CONST_CS | CONST_PERSISTENT); +} + static zend_class_entry *register_class_XMLParser(void) { zend_class_entry ce, *class_entry;