I think you should use Unwrap.

Technically most probably &a is aligned at 2 bytes at least and thus
is saved as a smi (small integer).  But Value cannot cope with it.

yours,
anton.

On Tue, Jun 1, 2010 at 11:10 PM, vlad <[email protected]> wrote:
> Hi
> A little artificial example but illustrates a problem I'm having:
>
> static v8::Handle<v8::Value> func(const v8::Arguments& args) {
>    if (args.IsConstructCall())
>        return v8::Undefined();
>
>    v8::Local<v8::Object> obj = args[0]->ToObject();
>    int* pThis = static_cast<int*>(v8::Local<v8::External>::Cast(obj-
>>GetInternalField(0))->Value()); <-- CRASH
>    return v8::Undefined();
> }
>
>        int a = 5;
>        v8::Handle<v8::ObjectTemplate> pt = v8::ObjectTemplate::New();
>        pt->SetCallAsFunctionHandler(func);
>        pt->SetInternalFieldCount(1);
>        v8::Handle<v8::Object> obj = pt->NewInstance();
>        obj->SetInternalField(0, v8::External::Wrap(&a));
>        g->Set(v8::String::New("myfunc"), obj);
>        V8RUN("myfunc(myfunc);");
>
> I'm expecting to get in args[0] myfunc v8 object, but it is not the
> case....
>
> Thanks
> Vlad
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users
>

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to