[Kde-bindings] KDE/kdebindings/php/phpqt/src
Thomas Moenicke
tm at php-qt.org
Thu Jul 24 09:37:11 UTC 2008
SVN commit 837222 by moenicke:
* freeing a temp. variable in the static-method-call opcode handler, which is used for lowercasing the method name and finding the corresponding Qt method
CCMAIL: kde-bindings at kde.org
M +30 -39 zend_handlers.cpp
--- trunk/KDE/kdebindings/php/phpqt/src/zend_handlers.cpp #837221:837222
@@ -143,49 +143,40 @@
int
ZendHandlers::constantMethodHandler(ZEND_OPCODE_HANDLER_ARGS)
{
- zend_op *opline = EX(opline);
- zend_class_entry *ce = EX_T(opline->op1.u.var).class_entry;
- union _zend_function *fbc;
- zval* function_name;
- char* function_name_strval;
- int function_name_strlen;
+ zend_op *opline = EX(opline);
+ zend_class_entry *ce = EX_T(opline->op1.u.var).class_entry;
+ union _zend_function *fbc;
+ zval* function_name;
+ char* function_name_strval;
+ int function_name_strlen;
- function_name = &opline->op2.u.constant;
- Context::setActiveCe( EX_T(opline->op1.u.var).class_entry );
+ function_name = &opline->op2.u.constant;
- if (Z_TYPE_P(function_name) != IS_STRING) {
- php_error(E_ERROR, "Function name must be a string");
- }
+ if (Z_TYPE_P(function_name) != IS_STRING)
+ php_error(E_ERROR, "Function name must be a string");
- // get method name
- function_name_strval = zend_str_tolower_dup(function_name->value.str.val, function_name->value.str.len);
- function_name_strlen = function_name->value.str.len;
+ // get method name
+ function_name_strval = zend_str_tolower_dup(function_name->value.str.val, function_name->value.str.len);
+ function_name_strlen = function_name->value.str.len;
- // call proxyMethod if method is not defined in userspace
- if(zend_hash_find(&ce->function_table, function_name_strval, function_name_strlen+1, (void**) &fbc) == FAILURE)
- {
- zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL);
- zend_bool is_const = (IS_CONST == IS_CONST);
+ // call proxyMethod if method is not defined in userspace
+ if(zend_hash_find(&ce->function_table, function_name_strval, function_name_strlen+1, (void**) &fbc) == FAILURE)
+ {
+ zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL);
- if(zend_hash_find(&ce->function_table, "staticproxymethod", 18, (void**) &fbc) != FAILURE)
- {
-
- //! TODO darn! we have a lowersized string here!
- Context::setMethodName( PQ::findRealMethodName( function_name->value.str.val ) );
- EX(fbc) = fbc;
-
- if(!is_const){ efree(function_name_strval); }
- EX(opline)++;
- ZEND_VM_CONTINUE();
-
- }
-
- if(!is_const){ efree(function_name_strval); }
-
- } // end try call proxyMethod
-
- return originalConstantMethodHandler(execute_data);
-
+ if(zend_hash_find(&ce->function_table, "staticproxymethod", 18, (void**) &fbc) != FAILURE)
+ {
+ Context::setActiveCe( EX_T(opline->op1.u.var).class_entry );
+ //! TODO we might have a lowersized string here
+ Context::setMethodName( PQ::findRealMethodName( function_name->value.str.val ) );
+ EX(fbc) = fbc;
+ efree(function_name_strval);
+ EX(opline)++;
+ ZEND_VM_CONTINUE(); // expands to return 0
+ }
+ } // end try call proxyMethod
+ efree(function_name_strval);
+ return originalConstantMethodHandler(execute_data);
}
/*!
@@ -233,7 +224,7 @@
for(int i = 20; i <= 25; i++){
phpqt_opcode_handlers[(ZEND_CLONE*25) + i] = cloneHandler;
}
-
+
// ZEND_FETCH_CONSTANT = 99 => 2475, line 29050 in 5.2.4
phpqt_opcode_handlers[(ZEND_FETCH_CONSTANT*25) + 0] = constantHandler;
// replace and store ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_HANDLER, 29400
More information about the Kde-bindings
mailing list