0
0
mirror of https://github.com/phpv8/v8js.git synced 2025-03-11 15:38:45 +00:00

- Fixed build in 5.4+

- Fixed bug #59553 (can't build due to missing class member)
This commit is contained in:
Felipe Pena 2012-06-13 02:24:48 +00:00
parent c2f284f39d
commit 39ac2f2304
4 changed files with 27 additions and 9 deletions

View File

@ -51,6 +51,14 @@
v8::String::Utf8Value var(obj->GetConstructorName());
#endif
#if ZEND_MODULE_API_NO >= 20100409
# define ZEND_HASH_KEY_DC , const zend_literal *key
# define ZEND_HASH_KEY_CC , key
#else
# define ZEND_HASH_KEY_DC
# define ZEND_HASH_KEY_CC
#endif
/* Global flags */
#define V8JS_GLOBAL_SET_FLAGS(flags) V8JS_GLOBAL->SetHiddenValue(V8JS_SYM("__php_flags__"), V8JS_INT(flags))
#define V8JS_GLOBAL_GET_FLAGS() V8JS_GLOBAL->GetHiddenValue(V8JS_SYM("__php_flags__"))->IntegerValue();

24
v8js.cc
View File

@ -154,7 +154,7 @@ ZEND_GET_MODULE(v8js)
/* V8 Object handlers */
static zval *php_v8js_v8_read_property(zval *object, zval *member, int type TSRMLS_DC) /* {{{ */
static zval *php_v8js_v8_read_property(zval *object, zval *member, int type ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
{
zval *retval = NULL;
php_v8js_object *obj = (php_v8js_object *) zend_object_store_get_object(object TSRMLS_CC);
@ -188,7 +188,7 @@ static zval *php_v8js_v8_read_property(zval *object, zval *member, int type TSRM
}
/* }}} */
static void php_v8js_v8_write_property(zval *object, zval *member, zval *value TSRMLS_DC) /* {{{ */
static void php_v8js_v8_write_property(zval *object, zval *member, zval *value ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
{
php_v8js_object *obj = (php_v8js_object *) zend_object_store_get_object(object TSRMLS_CC);
@ -198,7 +198,7 @@ static void php_v8js_v8_write_property(zval *object, zval *member, zval *value T
}
/* }}} */
static void php_v8js_v8_unset_property(zval *object, zval *member TSRMLS_DC) /* {{{ */
static void php_v8js_v8_unset_property(zval *object, zval *member ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
{
php_v8js_object *obj = (php_v8js_object *) zend_object_store_get_object(object TSRMLS_CC);
@ -274,7 +274,7 @@ static HashTable *php_v8js_v8_get_debug_info(zval *object, int *is_temp TSRMLS_D
}
/* }}} */
static zend_function *php_v8js_v8_get_method(zval **object_ptr, char *method, int method_len TSRMLS_DC) /* {{{ */
static zend_function *php_v8js_v8_get_method(zval **object_ptr, char *method, int method_len ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
{
zend_function *f;
v8::Local<v8::String> jsKey = V8JS_STRL(method, method_len);
@ -295,7 +295,11 @@ static zend_function *php_v8js_v8_get_method(zval **object_ptr, char *method, in
}
/* }}} */
#if PHP_VERSION_ID >= 50400
static int php_v8js_v8_call_method(const char *method, INTERNAL_FUNCTION_PARAMETERS) /* {{{ */
#else
static int php_v8js_v8_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS) /* {{{ */
#endif
{
zval *object = this_ptr, ***argv = NULL;
int i = 0, argc = ZEND_NUM_ARGS();
@ -625,7 +629,11 @@ static PHP_METHOD(V8Js, __construct)
v8::Local<v8::FunctionTemplate> php_obj_t = v8::FunctionTemplate::New();
/* Set class name for PHP object */
#if PHP_VERSION_ID >= 50400
free = !zend_get_object_classname(getThis(), const_cast<const char**>(&class_name), &class_name_len TSRMLS_CC);
#else
free = !zend_get_object_classname(getThis(), &class_name, &class_name_len TSRMLS_CC);
#endif
php_obj_t->SetClassName(V8JS_SYML(class_name, class_name_len));
if (free) {
@ -942,7 +950,7 @@ static const zend_function_entry v8js_methods[] = { /* {{{ */
/* V8Js object handlers */
static void php_v8js_write_property(zval *object, zval *member, zval *value TSRMLS_DC) /* {{{ */
static void php_v8js_write_property(zval *object, zval *member, zval *value ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
{
V8JS_BEGIN_CTX(c, object)
@ -955,11 +963,11 @@ static void php_v8js_write_property(zval *object, zval *member, zval *value TSRM
jsobj->ForceSet(V8JS_SYML(Z_STRVAL_P(member), Z_STRLEN_P(member)), zval_to_v8js(value TSRMLS_CC), v8::ReadOnly);
/* Write value to PHP object */
std_object_handlers.write_property(object, member, value TSRMLS_CC);
std_object_handlers.write_property(object, member, value ZEND_HASH_KEY_CC TSRMLS_CC);
}
/* }}} */
static void php_v8js_unset_property(zval *object, zval *member TSRMLS_DC) /* {{{ */
static void php_v8js_unset_property(zval *object, zval *member ZEND_HASH_KEY_DC TSRMLS_DC) /* {{{ */
{
V8JS_BEGIN_CTX(c, object)
@ -972,7 +980,7 @@ static void php_v8js_unset_property(zval *object, zval *member TSRMLS_DC) /* {{{
jsobj->ForceDelete(V8JS_SYML(Z_STRVAL_P(member), Z_STRLEN_P(member)));
/* Unset from PHP object */
std_object_handlers.unset_property(object, member TSRMLS_CC);
std_object_handlers.unset_property(object, member ZEND_HASH_KEY_CC TSRMLS_CC);
}
/* }}} */

View File

@ -84,7 +84,7 @@ static v8::Handle<v8::Value> php_v8js_php_callback(const v8::Arguments &args) /*
return_value = V8JS_THROW(TypeError, error, error_len);
if (ce == zend_ce_closure) {
efree(method_ptr->internal_function.function_name);
efree(const_cast<char*>(method_ptr->internal_function.function_name));
efree(method_ptr);
}
efree(error);

View File

@ -90,10 +90,12 @@ static void _php_v8js_dumper(v8::Local<v8::Value> var, int level TSRMLS_DC) /* {
{
php_printf("Date(%s)\n", valstr);
}
#if PHP_V8_API_VERSION >= 2003007
else if (var->IsRegExp())
{
php_printf("RegExp(%s)\n", valstr);
}
#endif
else if (var->IsArray())
{
v8::Local<v8::Array> array = v8::Local<v8::Array>::Cast(var);