diff options
author | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-08-19 22:35:22 +0200 |
---|---|---|
committer | Máté Kocsis <kocsismate@woohoolabs.com> | 2020-08-25 11:54:45 +0200 |
commit | f068fbcf1fe1faa89827630131536f68af1a28b2 (patch) | |
tree | a5cd83af3390d298492b623638bdbfdc023a9a84 /ext/xmlreader/php_xmlreader.c | |
parent | f4e9d0e32508249aca195b177c943d63c420666f (diff) | |
download | php-git-f068fbcf1fe1faa89827630131536f68af1a28b2.tar.gz |
Promote warnings to exceptions in ext/xmlreader
Closes GH-6021
Diffstat (limited to 'ext/xmlreader/php_xmlreader.c')
-rw-r--r-- | ext/xmlreader/php_xmlreader.c | 109 |
1 files changed, 60 insertions, 49 deletions
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c index efed79a239..7b26195409 100644 --- a/ext/xmlreader/php_xmlreader.c +++ b/ext/xmlreader/php_xmlreader.c @@ -175,7 +175,7 @@ zval *xmlreader_write_property(zend_object *object, zend_string *name, zval *val hnd = zend_hash_find_ptr(obj->prop_handler, name); } if (hnd != NULL) { - php_error_docref(NULL, E_WARNING, "Cannot write to read-only property"); + zend_throw_error(NULL, "Cannot write to read-only property"); } else { value = zend_std_write_property(object, name, value, cache_slot); } @@ -391,8 +391,8 @@ static void php_xmlreader_string_arg(INTERNAL_FUNCTION_PARAMETERS, xmlreader_rea } if (!name_len) { - php_error_docref(NULL, E_WARNING, "Argument cannot be an empty string"); - RETURN_FALSE; + zend_argument_value_error(1, "cannot be empty"); + RETURN_THROWS(); } id = ZEND_THIS; @@ -480,8 +480,8 @@ static void php_xmlreader_set_relaxng_schema(INTERNAL_FUNCTION_PARAMETERS, int t } if (source != NULL && !source_len) { - php_error_docref(NULL, E_WARNING, "Schema data source is required"); - RETURN_FALSE; + zend_argument_value_error(1, "cannot be empty"); + RETURN_THROWS(); } id = ZEND_THIS; @@ -506,15 +506,16 @@ static void php_xmlreader_set_relaxng_schema(INTERNAL_FUNCTION_PARAMETERS, int t intern->schema = schema; RETURN_TRUE; + } else { + php_error_docref(NULL, E_WARNING, "Schema contains errors"); + RETURN_FALSE; } + } else { + zend_throw_error(NULL, "Schema must be set prior to reading"); + RETURN_THROWS(); } - - php_error_docref(NULL, E_WARNING, "Unable to set schema. This must be set prior to reading or schema contains errors."); - - RETURN_FALSE; #else - php_error_docref(NULL, E_WARNING, "No Schema support built into libxml."); - + php_error_docref(NULL, E_WARNING, "No schema support built into libxml"); RETURN_FALSE; #endif } @@ -585,9 +586,14 @@ PHP_METHOD(XMLReader, getAttributeNs) RETURN_THROWS(); } - if (name_len == 0 || ns_uri_len == 0) { - php_error_docref(NULL, E_WARNING, "Attribute Name and Namespace URI cannot be empty"); - RETURN_FALSE; + if (name_len == 0) { + zend_argument_value_error(1, "cannot be empty"); + RETURN_THROWS(); + } + + if (ns_uri_len == 0) { + zend_argument_value_error(2, "cannot be empty"); + RETURN_THROWS(); } id = ZEND_THIS; @@ -622,8 +628,8 @@ PHP_METHOD(XMLReader, getParserProperty) retval = xmlTextReaderGetParserProp(intern->ptr,property); } if (retval == -1) { - php_error_docref(NULL, E_WARNING, "Invalid parser property"); - RETURN_FALSE; + zend_argument_value_error(1, "must be a valid parser property"); + RETURN_THROWS(); } RETURN_BOOL(retval); @@ -660,8 +666,8 @@ PHP_METHOD(XMLReader, moveToAttribute) } if (name_len == 0) { - php_error_docref(NULL, E_WARNING, "Attribute Name is required"); - RETURN_FALSE; + zend_argument_value_error(1, "cannot be empty"); + RETURN_THROWS(); } id = ZEND_THIS; @@ -719,9 +725,14 @@ PHP_METHOD(XMLReader, moveToAttributeNs) RETURN_THROWS(); } - if (name_len == 0 || ns_uri_len == 0) { - php_error_docref(NULL, E_WARNING, "Attribute Name and Namespace URI cannot be empty"); - RETURN_FALSE; + if (name_len == 0) { + zend_argument_value_error(1, "cannot be empty"); + RETURN_THROWS(); + } + + if (ns_uri_len == 0) { + zend_argument_value_error(2, "cannot be empty"); + RETURN_THROWS(); } id = ZEND_THIS; @@ -772,17 +783,17 @@ PHP_METHOD(XMLReader, read) id = ZEND_THIS; intern = Z_XMLREADER_P(id); - if (intern != NULL && intern->ptr != NULL) { - retval = xmlTextReaderRead(intern->ptr); - if (retval == -1) { - RETURN_FALSE; - } else { - RETURN_BOOL(retval); - } + if (intern == NULL || intern->ptr == NULL) { + zend_throw_error(NULL, "Data must be loaded before reading"); + RETURN_THROWS(); } - php_error_docref(NULL, E_WARNING, "Load Data before trying to read"); - RETURN_FALSE; + retval = xmlTextReaderRead(intern->ptr); + if (retval == -1) { + RETURN_FALSE; + } else { + RETURN_BOOL(retval); + } } /* }}} */ @@ -816,8 +827,7 @@ PHP_METHOD(XMLReader, next) } } - php_error_docref(NULL, E_WARNING, "Load Data before trying to read"); - RETURN_FALSE; + zend_throw_error(NULL, "Data must be loaded before reading"); } /* }}} */ @@ -848,8 +858,8 @@ PHP_METHOD(XMLReader, open) } if (!source_len) { - php_error_docref(NULL, E_WARNING, "Empty string supplied as input"); - RETURN_FALSE; + zend_argument_value_error(1, "cannot be empty"); + RETURN_THROWS(); } valid_file = _xmlreader_get_valid_file_path(source, resolved_path, MAXPATHLEN ); @@ -920,8 +930,8 @@ PHP_METHOD(XMLReader, setSchema) } if (source != NULL && !source_len) { - php_error_docref(NULL, E_WARNING, "Schema data source is required"); - RETURN_FALSE; + zend_argument_value_error(1, "cannot be empty"); + RETURN_THROWS(); } id = ZEND_THIS; @@ -932,15 +942,16 @@ PHP_METHOD(XMLReader, setSchema) if (retval == 0) { RETURN_TRUE; + } else { + php_error_docref(NULL, E_WARNING, "Schema contains errors"); + RETURN_FALSE; } + } else { + zend_throw_error(NULL, "Schema must be set prior to reading"); + RETURN_THROWS(); } - - php_error_docref(NULL, E_WARNING, "Unable to set schema. This must be set prior to reading or schema contains errors."); - - RETURN_FALSE; #else - php_error_docref(NULL, E_WARNING, "No Schema support built into libxml."); - + php_error_docref(NULL, E_WARNING, "No schema support built into libxml"); RETURN_FALSE; #endif } @@ -967,8 +978,8 @@ PHP_METHOD(XMLReader, setParserProperty) retval = xmlTextReaderSetParserProp(intern->ptr,property, value); } if (retval == -1) { - php_error_docref(NULL, E_WARNING, "Invalid parser property"); - RETURN_FALSE; + zend_argument_value_error(1, "must be a valid parser property"); + RETURN_THROWS(); } RETURN_TRUE; @@ -1022,8 +1033,8 @@ PHP_METHOD(XMLReader, XML) } if (!source_len) { - php_error_docref(NULL, E_WARNING, "Empty string supplied as input"); - RETURN_FALSE; + zend_argument_value_error(1, "cannot be empty"); + RETURN_THROWS(); } inputbfr = xmlParserInputBufferCreateMem(source, source_len, XML_CHAR_ENCODING_NONE); @@ -1105,7 +1116,7 @@ PHP_METHOD(XMLReader, expand) node = xmlTextReaderExpand(intern->ptr); if (node == NULL) { - php_error_docref(NULL, E_WARNING, "An Error Occurred while expanding "); + php_error_docref(NULL, E_WARNING, "An Error Occurred while expanding"); RETURN_FALSE; } else { nodec = xmlDocCopyNode(node, docp, 1); @@ -1117,8 +1128,8 @@ PHP_METHOD(XMLReader, expand) } } } else { - php_error_docref(NULL, E_WARNING, "Load Data before trying to expand"); - RETURN_FALSE; + zend_throw_error(NULL, "Data must be loaded before expanding"); + RETURN_THROWS(); } #else php_error(E_WARNING, "DOM support is not enabled"); |