mirror of
https://github.com/phpv8/v8js.git
synced 2024-12-22 18:41:52 +00:00
make it compile on PHP 7.3 and 7.4
This commit is contained in:
parent
83c215d4b1
commit
e153ff1651
@ -29,16 +29,17 @@
|
|||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#if PHP_VERSION_ID < 70400 && !defined(isnan)
|
|
||||||
/* php.h requires the isnan() macro, which is removed by c++ <cmath> header,
|
|
||||||
* work around: re-define the macro to std::isnan function */
|
|
||||||
#define isnan(a) std::isnan(a)
|
|
||||||
|
|
||||||
/* likewise isfinite */
|
|
||||||
#define isfinite(a) std::isfinite(a)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
#include "php_config.h"
|
||||||
|
|
||||||
|
/* work around incompatibilities regarding isnan() and isfinite() macros,
|
||||||
|
* affecting PHP versions before 7.4. */
|
||||||
|
#undef HAVE_DECL_ISFINITE
|
||||||
|
#undef HAVE_DECL_ISNAN
|
||||||
|
#define HAVE_DECL_ISFINITE 0
|
||||||
|
#define HAVE_DECL_ISNAN 0
|
||||||
|
|
||||||
#include "php.h"
|
#include "php.h"
|
||||||
#include "php_v8js.h"
|
#include "php_v8js.h"
|
||||||
}
|
}
|
||||||
|
@ -1307,10 +1307,10 @@ const zend_function_entry v8js_methods[] = { /* {{{ */
|
|||||||
|
|
||||||
/* V8Js object handlers */
|
/* V8Js object handlers */
|
||||||
|
|
||||||
static zval* v8js_write_property(zval *object, zval *member, zval *value, void **cache_slot) /* {{{ */
|
static SINCE74(zval*, void) v8js_write_property(zval *object, zval *member, zval *value, void **cache_slot) /* {{{ */
|
||||||
{
|
{
|
||||||
v8js_ctx *c = Z_V8JS_CTX_OBJ_P(object);
|
v8js_ctx *c = Z_V8JS_CTX_OBJ_P(object);
|
||||||
V8JS_CTX_PROLOGUE_EX(c, value);
|
V8JS_CTX_PROLOGUE_EX(c, SINCE74(value,));
|
||||||
|
|
||||||
/* Check whether member is public, if so, export to V8. */
|
/* Check whether member is public, if so, export to V8. */
|
||||||
zend_property_info *property_info = zend_get_property_info(c->std.ce, Z_STR_P(member), 1);
|
zend_property_info *property_info = zend_get_property_info(c->std.ce, Z_STR_P(member), 1);
|
||||||
@ -1324,7 +1324,7 @@ static zval* v8js_write_property(zval *object, zval *member, zval *value, void *
|
|||||||
if (Z_STRLEN_P(member) > std::numeric_limits<int>::max()) {
|
if (Z_STRLEN_P(member) > std::numeric_limits<int>::max()) {
|
||||||
zend_throw_exception(php_ce_v8js_exception,
|
zend_throw_exception(php_ce_v8js_exception,
|
||||||
"Property name exceeds maximum supported length", 0);
|
"Property name exceeds maximum supported length", 0);
|
||||||
return value;
|
return SINCE74(value,);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write value to PHP JS object */
|
/* Write value to PHP JS object */
|
||||||
@ -1333,7 +1333,7 @@ static zval* v8js_write_property(zval *object, zval *member, zval *value, void *
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Write value to PHP object */
|
/* Write value to PHP object */
|
||||||
return std_object_handlers.write_property(object, member, value, NULL);
|
SINCE74(return,) std_object_handlers.write_property(object, member, value, NULL);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
@ -83,6 +83,13 @@ int v8js_get_properties_hash(v8::Local<v8::Value> jsValue, HashTable *retval, in
|
|||||||
V8JS_CTX_PROLOGUE(ctx);
|
V8JS_CTX_PROLOGUE(ctx);
|
||||||
|
|
||||||
|
|
||||||
|
#if PHP_VERSION_ID < 70400
|
||||||
|
#define SINCE74(x,y) y
|
||||||
|
#else
|
||||||
|
#define SINCE74(x,y) x
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /* V8JS_V8_H */
|
#endif /* V8JS_V8_H */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -167,23 +167,23 @@ static zval *v8js_v8object_get_property_ptr_ptr(zval *object, zval *member, int
|
|||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
static zval *v8js_v8object_write_property(zval *object, zval *member, zval *value, void **cache_slot ) /* {{{ */
|
static SINCE74(zval*, void) v8js_v8object_write_property(zval *object, zval *member, zval *value, void **cache_slot ) /* {{{ */
|
||||||
{
|
{
|
||||||
v8js_v8object *obj = Z_V8JS_V8OBJECT_OBJ_P(object);
|
v8js_v8object *obj = Z_V8JS_V8OBJECT_OBJ_P(object);
|
||||||
|
|
||||||
if (!obj->ctx) {
|
if (!obj->ctx) {
|
||||||
zend_throw_exception(php_ce_v8js_exception,
|
zend_throw_exception(php_ce_v8js_exception,
|
||||||
"Can't access V8Object after V8Js instance is destroyed!", 0);
|
"Can't access V8Object after V8Js instance is destroyed!", 0);
|
||||||
return value;
|
return SINCE74(value,);
|
||||||
}
|
}
|
||||||
|
|
||||||
V8JS_CTX_PROLOGUE_EX(obj->ctx, value);
|
V8JS_CTX_PROLOGUE_EX(obj->ctx, SINCE74(value,));
|
||||||
v8::Local<v8::Value> v8objHandle = v8::Local<v8::Value>::New(isolate, obj->v8obj);
|
v8::Local<v8::Value> v8objHandle = v8::Local<v8::Value>::New(isolate, obj->v8obj);
|
||||||
|
|
||||||
if (Z_STRLEN_P(member) > std::numeric_limits<int>::max()) {
|
if (Z_STRLEN_P(member) > std::numeric_limits<int>::max()) {
|
||||||
zend_throw_exception(php_ce_v8js_exception,
|
zend_throw_exception(php_ce_v8js_exception,
|
||||||
"Member name length exceeds maximum supported length", 0);
|
"Member name length exceeds maximum supported length", 0);
|
||||||
return value;
|
return SINCE74(value,);
|
||||||
}
|
}
|
||||||
|
|
||||||
v8::Local<v8::Object> v8obj;
|
v8::Local<v8::Object> v8obj;
|
||||||
@ -191,7 +191,7 @@ static zval *v8js_v8object_write_property(zval *object, zval *member, zval *valu
|
|||||||
v8obj->CreateDataProperty(v8_context, V8JS_ZSYM(Z_STR_P(member)), zval_to_v8js(value, isolate));
|
v8obj->CreateDataProperty(v8_context, V8JS_ZSYM(Z_STR_P(member)), zval_to_v8js(value, isolate));
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return SINCE74(value,);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user