Skip to content

Commit 53560ca

Browse files
committed
rework the previous fix for var names with size_t, no ugly casts anymore
1 parent 74997dc commit 53560ca

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

ext/standard/array.c

+11-10
Original file line numberDiff line numberDiff line change
@@ -1301,9 +1301,10 @@ PHP_FUNCTION(array_search)
13011301
}
13021302
/* }}} */
13031303

1304-
static int php_valid_var_name(char *var_name, int var_name_len) /* {{{ */
1304+
static int php_valid_var_name(char *var_name, size_t var_name_len) /* {{{ */
13051305
{
1306-
int i, ch;
1306+
size_t i;
1307+
int ch;
13071308

13081309
if (!var_name || !var_name_len) {
13091310
return 0;
@@ -1337,7 +1338,7 @@ static int php_valid_var_name(char *var_name, int var_name_len) /* {{{ */
13371338
}
13381339
/* }}} */
13391340

1340-
PHPAPI int php_prefix_varname(zval *result, zval *prefix, char *var_name, int var_name_len, zend_bool add_underscore TSRMLS_DC) /* {{{ */
1341+
PHPAPI int php_prefix_varname(zval *result, zval *prefix, char *var_name, size_t var_name_len, zend_bool add_underscore TSRMLS_DC) /* {{{ */
13411342
{
13421343
ZVAL_NEW_STR(result, zend_string_alloc(Z_STRLEN_P(prefix) + (add_underscore ? 1 : 0) + var_name_len, 0));
13431344
memcpy(Z_STRVAL_P(result), Z_STRVAL_P(prefix), Z_STRLEN_P(prefix));
@@ -1387,7 +1388,7 @@ PHP_FUNCTION(extract)
13871388

13881389
if (prefix) {
13891390
convert_to_string(prefix);
1390-
if (Z_STRLEN_P(prefix) && !php_valid_var_name(Z_STRVAL_P(prefix), (int)Z_STRLEN_P(prefix))) {
1391+
if (Z_STRLEN_P(prefix) && !php_valid_var_name(Z_STRVAL_P(prefix), Z_STRLEN_P(prefix))) {
13911392
php_error_docref(NULL TSRMLS_CC, E_WARNING, "prefix is not a valid identifier");
13921393
return;
13931394
}
@@ -1408,7 +1409,7 @@ PHP_FUNCTION(extract)
14081409

14091410
ZVAL_LONG(&num, num_key);
14101411
convert_to_string(&num);
1411-
php_prefix_varname(&final_name, prefix, Z_STRVAL(num), (int)Z_STRLEN(num), 1 TSRMLS_CC);
1412+
php_prefix_varname(&final_name, prefix, Z_STRVAL(num), Z_STRLEN(num), 1 TSRMLS_CC);
14121413
zval_dtor(&num);
14131414
} else {
14141415
continue;
@@ -1432,7 +1433,7 @@ PHP_FUNCTION(extract)
14321433

14331434
case EXTR_PREFIX_IF_EXISTS:
14341435
if (var_exists) {
1435-
php_prefix_varname(&final_name, prefix, var_name->val, (int)var_name->len, 1 TSRMLS_CC);
1436+
php_prefix_varname(&final_name, prefix, var_name->val, var_name->len, 1 TSRMLS_CC);
14361437
}
14371438
break;
14381439

@@ -1444,14 +1445,14 @@ PHP_FUNCTION(extract)
14441445

14451446
case EXTR_PREFIX_ALL:
14461447
if (Z_TYPE(final_name) == IS_NULL && var_name->len != 0) {
1447-
php_prefix_varname(&final_name, prefix, var_name->val, (int)var_name->len, 1 TSRMLS_CC);
1448+
php_prefix_varname(&final_name, prefix, var_name->val, var_name->len, 1 TSRMLS_CC);
14481449
}
14491450
break;
14501451

14511452
case EXTR_PREFIX_INVALID:
14521453
if (Z_TYPE(final_name) == IS_NULL) {
1453-
if (!php_valid_var_name(var_name->val, (int)var_name->len)) {
1454-
php_prefix_varname(&final_name, prefix, var_name->val, (int)var_name->len, 1 TSRMLS_CC);
1454+
if (!php_valid_var_name(var_name->val, var_name->len)) {
1455+
php_prefix_varname(&final_name, prefix, var_name->val, var_name->len, 1 TSRMLS_CC);
14551456
} else {
14561457
ZVAL_STR_COPY(&final_name, var_name);
14571458
}
@@ -1465,7 +1466,7 @@ PHP_FUNCTION(extract)
14651466
break;
14661467
}
14671468

1468-
if (Z_TYPE(final_name) != IS_NULL && php_valid_var_name(Z_STRVAL(final_name), (int)Z_STRLEN(final_name))) {
1469+
if (Z_TYPE(final_name) != IS_NULL && php_valid_var_name(Z_STRVAL(final_name), Z_STRLEN(final_name))) {
14691470
if (extract_refs) {
14701471
zval *orig_var;
14711472

ext/standard/basic_functions.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ PHP_RSHUTDOWN_FUNCTION(browscap);
143143
/* Left for BC (not binary safe!) */
144144
PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers TSRMLS_DC);
145145
PHPAPI int _php_error_log_ex(int opt_err, char *message, size_t message_len, char *opt, char *headers TSRMLS_DC);
146-
PHPAPI int php_prefix_varname(zval *result, zval *prefix, char *var_name, int var_name_len, zend_bool add_underscore TSRMLS_DC);
146+
PHPAPI int php_prefix_varname(zval *result, zval *prefix, char *var_name, size_t var_name_len, zend_bool add_underscore TSRMLS_DC);
147147

148148
#if SIZEOF_INT == 4
149149
/* Most 32-bit and 64-bit systems have 32-bit ints */

0 commit comments

Comments
 (0)