Release (ref counted) called twice

Started by
4 comments, last by andrew1b 14 years, 2 months ago
Hi, I'm having trouble with my reference counted object in AngelScript: Script code:

//Decl: Entity @SeekEntity(const string &in)
Entity @circle = SeekEntity("red_circle");
The problem is that the release method is being called twice, while the addref is called once. It turns the reference counter to zero and deletes it. I have followed it with the debugger and I saw that both release calls come from AS. The reference counter is starting from 1 (in the constructor). If remove the code line above the program runs OK. Why is it happening?
...
Advertisement
How is SeekEntity implemented? It may be creating references and not releasing them.
Since SeekEntity is returning a handle it must increment the reference counter for that object. Alternatively you can use autohandles when registering the function, i.e.:

engine->RegisterGlobalFunction("Entity @+ SeekEntity(const string &in)", asFUNCTION(SeekEntity), asCALL_CDECL);




AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Thank you again Andreas, it worked.
One suggestion: the "Registering a reference type" section of the manual could talk about it or at least link the the page where the "+" modifier is presented (if there is one). I think it would avoid this kind of post.
...
Like this: Object handles?

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

Quote:Original post by WitchLord
Like this: Object handles?


I meant a link in the "Registering a reference type" page, but that's already visible enough. Keep up the good work.
...

This topic is closed to new replies.

Advertisement