diff options
Diffstat (limited to 'ext/standard/versioning.c')
-rw-r--r-- | ext/standard/versioning.c | 16 |
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)) { |