Jump to content
  • Advertisement
Sign in to follow this  
Squared'D

Assert Triggered in CScriptWeakRef with AngelScript 2.28 samples/game

This topic is 1822 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I've been meaning to use AngelScript for some time, but I'm just getting around to adding it. I thought I'd start with the sample game. I compiled it and ran the program, but after selecting an action, the program gives the following assert message "Assertion failed: strcmp(type->GetName(), "weakref") == 0, file ...\weakref.cpp line 85". I did some investigating and found that when I downgraded to 2.27 it works. So I tried just using the weakref.cpp file from 2.27 with 2.28 and it worked. I'm not experienced enough with AngelScript to figure out why it crashes, but here's the difference in the code

 

2.28 Crashes

CScriptWeakRef::CScriptWeakRef(void *ref, asIObjectType *type)
{
	refCount = 1;
	m_ref  = ref;
	m_type = type;
	m_type->AddRef();

	// The given type should be the weakref template instance
	assert( strcmp(type->GetName(), "weakref") == 0 );

	// Get the shared flag that will tell us when the object has been destroyed
	// This is threadsafe as we hold a strong reference to the object
	m_weakRefFlag = m_type->GetEngine()->GetWeakRefFlagOfScriptObject(m_ref, m_type->GetSubType());
	if( m_weakRefFlag )
		m_weakRefFlag->AddRef();
}

2.27 Works

CScriptWeakRef::CScriptWeakRef(void *ref, asIObjectType *type)
{
	refCount = 1;
	m_ref  = ref;
	m_type = type;
	m_type->AddRef();

	// Get the shared flag that will tell us when the object has been destroyed
	// This is threadsafe as we hold a strong reference to the object 
	m_weakRefFlag = m_type->GetEngine()->GetWeakRefFlagOfScriptObject(m_ref, m_type->GetSubType());
	if( m_weakRefFlag )
		m_weakRefFlag->AddRef();

	// Release the handle that was received, since the weakref isn't suppose to prevent the object from being destroyed
	m_type->GetEngine()->ReleaseScriptObject(m_ref, m_type->GetSubType());
}

I don't know enough about AngelScript to say if a script error (the script needs to be updated) or if there's a problem with the sample's C++ code.

Share this post


Link to post
Share on other sites
Advertisement

The problem was with the assert(). It should expect either "weakref" or "const_weakref". 

 

I've fixed this in revision 1801. 

 

Regards,

Andreas

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!