summaryrefslogtreecommitdiff
path: root/ext/xmlreader/php_xmlreader.c
diff options
context:
space:
mode:
authorMáté Kocsis <kocsismate@woohoolabs.com>2020-08-19 22:35:22 +0200
committerMáté Kocsis <kocsismate@woohoolabs.com>2020-08-25 11:54:45 +0200
commitf068fbcf1fe1faa89827630131536f68af1a28b2 (patch)
treea5cd83af3390d298492b623638bdbfdc023a9a84 /ext/xmlreader/php_xmlreader.c
parentf4e9d0e32508249aca195b177c943d63c420666f (diff)
downloadphp-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.c109
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");