summaryrefslogtreecommitdiff
path: root/ext/standard/versioning.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/versioning.c')
-rw-r--r--ext/standard/versioning.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/ext/standard/versioning.c b/ext/standard/versioning.c
index ef0079572d..865c899b63 100644
--- a/ext/standard/versioning.c
+++ b/ext/standard/versioning.c
@@ -212,15 +212,17 @@ PHP_FUNCTION(version_compare)
{
char *v1, *v2, *op = NULL;
size_t v1_len, v2_len, op_len = 0;
- int compare, argc;
+ int compare;
+
+ ZEND_PARSE_PARAMETERS_START(2, 3)
+ Z_PARAM_STRING(v1, v1_len)
+ Z_PARAM_STRING(v2, v2_len)
+ Z_PARAM_OPTIONAL
+ Z_PARAM_STRING(op, op_len)
+ ZEND_PARSE_PARAMETERS_END();
- argc = ZEND_NUM_ARGS();
- if (zend_parse_parameters(argc, "ss|s", &v1, &v1_len, &v2,
- &v2_len, &op, &op_len) == FAILURE) {
- return;
- }
compare = php_version_compare(v1, v2);
- if (argc == 2) {
+ if (!op) {
RETURN_LONG(compare);
}
if (!strncmp(op, "<", op_len) || !strncmp(op, "lt", op_len)) {