On Sat, Oct 5, 2013 at 10:07 PM, James Lomax <[email protected]> wrote: > Hi, this is somethings that's had me stumped for the past 6 hours now.. > > I have an object template which has a setter and getter for the object > "update" which simply set/get an object handle accessible to both the setter > and getter (see "Things I've tried".) An object is instantiated within the > global context called "world" from this object template. A script is then > run which sets "world.update" to a function with a basic output message. The > program then gets the update function and calls it which works exactly as > intended - printing some output. The program then gets the update function > again, but the update function is now a string - the output from the > original call. Trying to call it leads to an exception. > > The code: http://pastebin.com/i33nLWby > The script (main.js): http://pastebin.com/X3GZRdbV > The output: > > Set update() [update] > Get update() [update] > Did a world.update() > Get update() [update] > Caught2: Uncaught TypeError: Did a world.update() > is not a function > > Without the object template (i.e. with just a regular object in javascript > without the getter/setter combination) the program functions fine but I'd > like to be able to use this to have the script manage callbacks. > > Why does this happen and what am I doing wrong? > > Things I've tried: > > - In the code I use an internal field pointing to a Handle<Function> object > though I have tried using a global variable and using plain old object > handles - no differences were noted here. > - Get'ing the update function but not calling, then get'ing again. This > proves the call is part of the cause > - Get'ing and calling, followed by calling from the internal field (no > difference.) > - Calling directly from the internal field (worldUpdateFunc.func); first > call is successful, after this the internal field is no longer a function > (can't figure out what it is as it returns false to all the Is* functions) > and the program segfaults somewhere random in V8?? > > Thanks, James.
One bug I spotted in your example code is that you're storing the callback function in a Handle<Function> when it should be a Persistent<Function>. -- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
