Skip to content

Commit 83dfe61

Browse files
committed
Promote warnings to exceptions in ext/sysvmsg and ext/xml
1 parent 79981a3 commit 83dfe61

File tree

5 files changed

+28
-31
lines changed

5 files changed

+28
-31
lines changed

ext/sysvmsg/sysvmsg.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,8 @@ PHP_FUNCTION(msg_receive)
295295
}
296296

297297
if (maxsize <= 0) {
298-
php_error_docref(NULL, E_WARNING, "Maximum size of the message has to be greater than zero");
299-
return;
298+
zend_argument_value_error(4, "must be greater than 0");
299+
RETURN_THROWS();
300300
}
301301

302302
if (flags != 0) {
@@ -399,7 +399,6 @@ PHP_FUNCTION(msg_send)
399399
p = Z_STRVAL_P(message);
400400
message_len = Z_STRLEN_P(message);
401401
break;
402-
403402
case IS_LONG:
404403
message_len = spprintf(&p, 0, ZEND_LONG_FMT, Z_LVAL_P(message));
405404
break;
@@ -412,9 +411,10 @@ PHP_FUNCTION(msg_send)
412411
case IS_DOUBLE:
413412
message_len = spprintf(&p, 0, "%F", Z_DVAL_P(message));
414413
break;
414+
415415
default:
416-
php_error_docref(NULL, E_WARNING, "Message parameter must be either a string or a number.");
417-
RETURN_FALSE;
416+
zend_argument_type_error(3, "must be of type string|int|float|bool, %s given", zend_zval_type_name(message));
417+
RETURN_THROWS();
418418
}
419419

420420
messagebuffer = safe_emalloc(message_len, 1, sizeof(struct php_msgbuf));

ext/sysvmsg/tests/005.phpt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,12 @@ foreach ($tests as $i => $q) {
2727

2828
var_dump(msg_receive($q, 0, $null, 1, $msg, true, 0, $errno));
2929
var_dump($errno != 0);
30-
// again, but triggering an E_WARNING
31-
var_dump(msg_receive($q, 0, $null, 0, $msg));
30+
// again, but triggering an exception
31+
try {
32+
msg_receive($q, 0, $null, 0, $msg);
33+
} catch (ValueError $exception) {
34+
echo $exception->getMessage() . "\n";
35+
}
3236

3337
var_dump(msg_send($q, 1, 'foo', true, true, $errno));
3438
var_dump($errno != 0);
@@ -42,9 +46,7 @@ bool(false)
4246
bool(false)
4347
bool(false)
4448
bool(true)
45-
46-
Warning: msg_receive(): Maximum size of the message has to be greater than zero in %s on line %d
47-
bool(false)
49+
msg_receive(): Maximum size of the message must be greater than 0
4850

4951
Warning: msg_send(): msgsnd failed: Invalid argument in %s on line %d
5052
bool(false)
@@ -54,9 +56,7 @@ bool(false)
5456
bool(false)
5557
bool(false)
5658
bool(true)
57-
58-
Warning: msg_receive(): Maximum size of the message has to be greater than zero in %s on line %d
59-
bool(false)
59+
Warning: msg_receive(): Maximum size of the message must be greater than 0
6060

6161
Warning: msg_send(): msgsnd failed: Invalid argument in %s on line %d
6262
bool(false)

ext/xml/xml.c

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,8 +1029,8 @@ static void php_xml_parser_create_impl(INTERNAL_FUNCTION_PARAMETERS, int ns_supp
10291029
} else if (strcasecmp(encoding_param, "US-ASCII") == 0) {
10301030
encoding = (XML_Char*)"US-ASCII";
10311031
} else {
1032-
php_error_docref(NULL, E_WARNING, "Unsupported source encoding \"%s\"", encoding_param);
1033-
RETURN_FALSE;
1032+
zend_argument_value_error(1, "is an unsupported source encoding");
1033+
RETURN_THROWS();
10341034
}
10351035
} else {
10361036
encoding = XML(default_encoding);
@@ -1442,15 +1442,15 @@ PHP_FUNCTION(xml_parser_set_option)
14421442

14431443
enc = xml_get_encoding((XML_Char*)Z_STRVAL_P(val));
14441444
if (enc == NULL) {
1445-
php_error_docref(NULL, E_WARNING, "Unsupported target encoding \"%s\"", Z_STRVAL_P(val));
1446-
RETURN_FALSE;
1445+
zend_argument_value_error(3, "is an unsupported target encoding");
1446+
RETURN_THROWS();
14471447
}
14481448
parser->target_encoding = enc->name;
14491449
break;
14501450
}
14511451
default:
1452-
php_error_docref(NULL, E_WARNING, "Unknown option");
1453-
RETURN_FALSE;
1452+
zend_argument_value_error(2, "must be one of PHP_XML_OPTION_CASE_FOLDING, PHP_XML_OPTION_SKIP_TAGSTART, PHP_XML_OPTION_SKIP_WHITE, PHP_XML_OPTION_TARGET_ENCODING");
1453+
RETURN_THROWS();
14541454
break;
14551455
}
14561456
RETVAL_TRUE;
@@ -1483,12 +1483,9 @@ PHP_FUNCTION(xml_parser_get_option)
14831483
RETURN_STRING((char *)parser->target_encoding);
14841484
break;
14851485
default:
1486-
php_error_docref(NULL, E_WARNING, "Unknown option");
1487-
RETURN_FALSE;
1488-
break;
1486+
zend_argument_value_error(2, "must be one of PHP_XML_OPTION_CASE_FOLDING, PHP_XML_OPTION_SKIP_TAGSTART, PHP_XML_OPTION_SKIP_WHITE, PHP_XML_OPTION_TARGET_ENCODING");
1487+
RETURN_THROWS();
14891488
}
1490-
1491-
RETVAL_FALSE; /* never reached */
14921489
}
14931490
/* }}} */
14941491

ext/xml/xml.stub.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
/** @generate-function-entries */
44

5-
function xml_parser_create(?string $encoding = null): XmlParser|false {}
5+
function xml_parser_create(?string $encoding = null): XmlParser {}
66

7-
function xml_parser_create_ns(?string $encoding = null, string $sep = ':'): XmlParser|false {}
7+
function xml_parser_create_ns(?string $encoding = null, string $sep = ':'): XmlParser {}
88

99
function xml_set_object(XmlParser $parser, object $obj): bool {}
1010

@@ -61,7 +61,7 @@ function xml_parser_free(XmlParser $parser): bool {}
6161
/** @param string|int $value */
6262
function xml_parser_set_option(XmlParser $parser, int $option, $value): bool {}
6363

64-
function xml_parser_get_option(XmlParser $parser, int $option): string|int|false {}
64+
function xml_parser_get_option(XmlParser $parser, int $option): string|int {}
6565

6666
final class XMLParser
6767
{

ext/xml/xml_arginfo.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 60a1f2421a3320374850aa5da7e995077961705e */
2+
* Stub hash: b3c718c2aeba9a9c05b6cb281fd7ccaa3791d34e */
33

4-
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_xml_parser_create, 0, 0, XmlParser, MAY_BE_FALSE)
4+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_xml_parser_create, 0, 0, XmlParser, 0)
55
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, encoding, IS_STRING, 1, "null")
66
ZEND_END_ARG_INFO()
77

8-
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_xml_parser_create_ns, 0, 0, XmlParser, MAY_BE_FALSE)
8+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_xml_parser_create_ns, 0, 0, XmlParser, 0)
99
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, encoding, IS_STRING, 1, "null")
1010
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, sep, IS_STRING, 0, "\':\'")
1111
ZEND_END_ARG_INFO()
@@ -77,7 +77,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xml_parser_set_option, 0, 3, _IS
7777
ZEND_ARG_INFO(0, value)
7878
ZEND_END_ARG_INFO()
7979

80-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_xml_parser_get_option, 0, 2, MAY_BE_STRING|MAY_BE_LONG|MAY_BE_FALSE)
80+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_xml_parser_get_option, 0, 2, MAY_BE_STRING|MAY_BE_LONG)
8181
ZEND_ARG_OBJ_INFO(0, parser, XmlParser, 0)
8282
ZEND_ARG_TYPE_INFO(0, option, IS_LONG, 0)
8383
ZEND_END_ARG_INFO()

0 commit comments

Comments
 (0)