mirror of
https://github.com/matrix-construct/construct
synced 2024-10-02 21:59:02 +02:00
ircd::js: Fix unconditional cast of this
to object
type in trap::on_call handlers.
This commit is contained in:
parent
fcc654699d
commit
84383d41d8
2 changed files with 8 additions and 5 deletions
|
@ -36,7 +36,7 @@ class trap
|
||||||
std::map<persist_string, trap *, persist_string::less> children;
|
std::map<persist_string, trap *, persist_string::less> children;
|
||||||
|
|
||||||
// Override these to define JS objects in C
|
// Override these to define JS objects in C
|
||||||
virtual value on_call(object::handle, object::handle, const args &);
|
virtual value on_call(object::handle, value::handle, const args &);
|
||||||
virtual value on_set(object::handle, id::handle, value::handle);
|
virtual value on_set(object::handle, id::handle, value::handle);
|
||||||
virtual value on_get(object::handle, id::handle, value::handle);
|
virtual value on_get(object::handle, id::handle, value::handle);
|
||||||
virtual void on_add(object::handle, id::handle, value::handle);
|
virtual void on_add(object::handle, id::handle, value::handle);
|
||||||
|
|
11
ircd/js.cc
11
ircd/js.cc
|
@ -734,13 +734,13 @@ noexcept try
|
||||||
assert(!pending_exception(*cx));
|
assert(!pending_exception(*cx));
|
||||||
|
|
||||||
const struct args args(argc, argv);
|
const struct args args(argc, argv);
|
||||||
object that(args.computeThis(c));
|
value that(args.computeThis(c));
|
||||||
object func(args.callee());
|
object func(args.callee());
|
||||||
|
|
||||||
auto &trap_that(from(that));
|
//auto &trap_that(from(that));
|
||||||
auto &trap_func(from(func));
|
auto &trap_func(from(func));
|
||||||
|
|
||||||
trap_that.debug("call: '%s'", trap_func.name().c_str());
|
//trap_that.debug("call: '%s'", trap_func.name().c_str());
|
||||||
trap_func.debug("call");
|
trap_func.debug("call");
|
||||||
|
|
||||||
args.rval().set(trap_func.on_call(func, that, args));
|
args.rval().set(trap_func.on_call(func, that, args));
|
||||||
|
@ -1091,6 +1091,9 @@ ircd::js::trap::on_get(object::handle obj,
|
||||||
id::handle id,
|
id::handle id,
|
||||||
value::handle val)
|
value::handle val)
|
||||||
{
|
{
|
||||||
|
if(!undefined(val))
|
||||||
|
return val;
|
||||||
|
|
||||||
const string name(id);
|
const string name(id);
|
||||||
const auto it(children.find(name));
|
const auto it(children.find(name));
|
||||||
if(it == end(children))
|
if(it == end(children))
|
||||||
|
@ -1110,7 +1113,7 @@ ircd::js::trap::on_set(object::handle,
|
||||||
|
|
||||||
ircd::js::value
|
ircd::js::value
|
||||||
ircd::js::trap::on_call(object::handle,
|
ircd::js::trap::on_call(object::handle,
|
||||||
object::handle,
|
value::handle,
|
||||||
const args &)
|
const args &)
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
|
|
Loading…
Reference in a new issue