Sign in to follow this  
andrew1b

Release (ref counted) called twice

Recommended Posts

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?

Share this post


Link to post
Share on other sites
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);




Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this