Skip to content

Commit

Permalink
Fixed PHP 5.4 building
Browse files Browse the repository at this point in the history
Summary:
Fixed PHP 5.4 building
* class names became constants
* return_reference is stored in zend_function.fn_flags
* deal with znode reorganisation

Test Plan:
Build against php 5.4
Build against php 5.3

Reviewers: scoates

CC:

Differential Revision: 682
  • Loading branch information
Scott MacVicar committed Jul 16, 2011
1 parent 8e90cba commit a6bae51
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions extension/xhprof.c
Expand Up @@ -28,6 +28,7 @@
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_xhprof.h"
#include "Zend/zend_extensions.h"
#include <sys/time.h>
#include <sys/resource.h>
#include <stdlib.h>
Expand Down Expand Up @@ -898,7 +899,7 @@ static char *hp_get_base_filename(char *filename) {
static char *hp_get_function_name(zend_op_array *ops TSRMLS_DC) {
zend_execute_data *data;
char *func = NULL;
char *cls = NULL;
const char *cls = NULL;
char *ret = NULL;
int len;
zend_function *curr_func;
Expand Down Expand Up @@ -942,7 +943,12 @@ static char *hp_get_function_name(zend_op_array *ops TSRMLS_DC) {
/* we are dealing with a special directive/function like
* include, eval, etc.
*/
#if ZEND_EXTENSION_API_NO >= 220100525
curr_op = data->opline->extended_value;
#else
curr_op = data->opline->op2.u.constant.value.lval;
#endif

switch (curr_op) {
case ZEND_EVAL:
func = "eval";
Expand Down Expand Up @@ -1660,13 +1666,22 @@ ZEND_DLEXPORT void hp_execute_internal(zend_execute_data *execute_data,
if (!_zend_execute_internal) {
/* no old override to begin with. so invoke the builtin's implementation */
zend_op *opline = EX(opline);
#if ZEND_EXTENSION_API_NO >= 220100525
temp_variable *retvar = &EX_T(opline->result.var);
((zend_internal_function *) EX(function_state).function)->handler(
opline->extended_value,
retvar->var.ptr,
(EX(function_state).function->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) ?
&retvar->var.ptr:NULL,
EX(object), ret TSRMLS_CC);
#else
((zend_internal_function *) EX(function_state).function)->handler(
opline->extended_value,
EX_T(opline->result.u.var).var.ptr,
EX(function_state).function->common.return_reference ?
&EX_T(opline->result.u.var).var.ptr:NULL,
EX(object), ret TSRMLS_CC);

#endif
} else {
/* call the old override */
_zend_execute_internal(execute_data, ret TSRMLS_CC);
Expand Down

0 comments on commit a6bae51

Please sign in to comment.