Refactor to using a stack based zval instead of dynamic allocation

This commit is contained in:
Anthony Ferrara 2012-10-07 05:42:08 -04:00
parent 37b2207f66
commit 0bc9ca39ce

View file

@ -245,12 +245,11 @@ PHP_FUNCTION(password_needs_rehash)
if (options && zend_symtable_find(options, "cost", sizeof("cost"), (void **) &option_buffer) == SUCCESS) { if (options && zend_symtable_find(options, "cost", sizeof("cost"), (void **) &option_buffer) == SUCCESS) {
if (Z_TYPE_PP(option_buffer) != IS_LONG) { if (Z_TYPE_PP(option_buffer) != IS_LONG) {
zval *cast_option_buffer; zval cast_option_buffer;
ALLOC_ZVAL(cast_option_buffer); MAKE_COPY_ZVAL(option_buffer, &cast_option_buffer);
MAKE_COPY_ZVAL(option_buffer, cast_option_buffer); convert_to_long(&cast_option_buffer);
convert_to_long(cast_option_buffer); new_cost = Z_LVAL(cast_option_buffer);
new_cost = Z_LVAL_P(cast_option_buffer); zval_dtor(&cast_option_buffer);
zval_ptr_dtor(&cast_option_buffer);
} else { } else {
new_cost = Z_LVAL_PP(option_buffer); new_cost = Z_LVAL_PP(option_buffer);
} }
@ -326,12 +325,11 @@ PHP_FUNCTION(password_hash)
if (options && zend_symtable_find(options, "cost", 5, (void **) &option_buffer) == SUCCESS) { if (options && zend_symtable_find(options, "cost", 5, (void **) &option_buffer) == SUCCESS) {
if (Z_TYPE_PP(option_buffer) != IS_LONG) { if (Z_TYPE_PP(option_buffer) != IS_LONG) {
zval *cast_option_buffer; zval cast_option_buffer;
ALLOC_ZVAL(cast_option_buffer); MAKE_COPY_ZVAL(option_buffer, &cast_option_buffer);
MAKE_COPY_ZVAL(option_buffer, cast_option_buffer); convert_to_long(&cast_option_buffer);
convert_to_long(cast_option_buffer); cost = Z_LVAL(cast_option_buffer);
cost = Z_LVAL_P(cast_option_buffer); zval_dtor(&cast_option_buffer);
zval_ptr_dtor(&cast_option_buffer);
} else { } else {
cost = Z_LVAL_PP(option_buffer); cost = Z_LVAL_PP(option_buffer);
} }
@ -366,17 +364,16 @@ PHP_FUNCTION(password_hash)
case IS_LONG: case IS_LONG:
case IS_DOUBLE: case IS_DOUBLE:
case IS_OBJECT: { case IS_OBJECT: {
zval *cast_option_buffer; zval cast_option_buffer;
ALLOC_ZVAL(cast_option_buffer); MAKE_COPY_ZVAL(option_buffer, &cast_option_buffer);
MAKE_COPY_ZVAL(option_buffer, cast_option_buffer); convert_to_string(&cast_option_buffer);
convert_to_string(cast_option_buffer); if (Z_TYPE(cast_option_buffer) == IS_STRING) {
if (Z_TYPE_P(cast_option_buffer) == IS_STRING) { buffer = estrndup(Z_STRVAL(cast_option_buffer), Z_STRLEN(cast_option_buffer));
buffer = estrndup(Z_STRVAL_P(cast_option_buffer), Z_STRLEN_P(cast_option_buffer)); buffer_len_int = Z_STRLEN(cast_option_buffer);
buffer_len_int = Z_STRLEN_P(cast_option_buffer); zval_dtor(&cast_option_buffer);
zval_ptr_dtor(&cast_option_buffer);
break; break;
} }
zval_ptr_dtor(&cast_option_buffer); zval_dtor(&cast_option_buffer);
} }
case IS_BOOL: case IS_BOOL:
case IS_NULL: case IS_NULL: