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.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/ext/standard/versioning.c b/ext/standard/versioning.c
index e03c5eaa1b..5d58d4d670 100644
--- a/ext/standard/versioning.c
+++ b/ext/standard/versioning.c
@@ -34,7 +34,7 @@
PHPAPI char *
php_canonicalize_version(const char *version)
{
- int len = strlen(version), in_number = 0;
+ int len = strlen(version);
char *buf = emalloc(len * 2 + 1), *q, lp, lq;
const char *p;
@@ -175,22 +175,19 @@ php_version_compare(const char *orig_ver1, const char *orig_ver2)
PHP_FUNCTION(version_compare)
{
- zval **v1, **v2, **oper;
+ char *v1, *v2, *op;
+ int v1_len, v2_len, op_len;
int compare, argc;
- char *op;
argc = ZEND_NUM_ARGS();
- if (argc < 2 || argc > 3 || zend_get_parameters_ex(argc, &v1, &v2, &oper) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(argc TSRMLS_CC, "ss|s", &v1, &v1_len, &v2,
+ &v2_len, &op, &op_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(v1);
- convert_to_string_ex(v2);
- compare = php_version_compare(Z_STRVAL_PP(v1), Z_STRVAL_PP(v2));
+ compare = php_version_compare(v1, v2);
if (argc == 2) {
RETURN_LONG(compare);
}
- convert_to_string_ex(oper);
- op = Z_STRVAL_PP(oper);
if (!strcmp(op, "<") || !strcmp(op, "lt")) {
RETURN_LONG(compare == -1);
}