Sign in to follow this  

Property accessor bug?

This topic is 2830 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

Hi! When I used property accessor in script, my application stopped. Is this bug? //----------------------------------------------------------- // AngelScript script code class Vector3 { float x; float y; float z; }; class Hoge { const Vector3 get_pos()const { return mPos; } const Vector3 foo()const { return pos; } Vector3 mPos; }; void main() { Hoge h; const Vector3 vec = h.foo(); } //----------------------------------------------------------- Version: AngelScript r564(Debug Build Version) Compiler: MSVC8 Calltrace: GameProject.exe!asCArray<asCScriptFunction *>::operator[](unsigned int index=0) Line 147 + 0x6 Bytes C++ GameProject.exe!asCContext::CallInterfaceMethod(asCScriptFunction * func=0x0a8e1058) Line 1254 + 0x15 Bytes C++ GameProject.exe!asCContext::ExecuteNext() Line 2790 C++ GameProject.exe!asCContext::Execute() Line 1004 + 0x8 Bytes C++ GameProject.exe!base::ags::ContextHandle::execute() Line 104 + 0x23 Bytes C++ GameProject.exe!app::scene::SceneASTest::onSceneStart() Line 67 C++ GameProject.exe!app::Application::beginSceneProcess() Line 191 + 0x23 Bytes C++ GameProject.exe!app::Application::execute() Line 99 + 0xc Bytes C++ GameProject.exe!`anonymous namespace'::t_executeApplication() Line 50 + 0xb Bytes C++ GameProject.exe!app::EntryPoint::run() Line 73 C++ GameProject.exe!wmain(int __formal=1, int __formal=1) Line 16 C++ GameProject.exe!__tmainCRTStartup() Line 594 + 0x19 Bytes C GameProject.exe!wmainCRTStartup() Line 414 C

Share this post


Link to post
Share on other sites
Thank you for your reply.
I tried r566 , but my application stopped.

I created another sample code.


-----------------------------------------------------------
class Vector3
{
float x;
float y;
float z;
};

class Hoge
{
const Vector3 get_pos() { return mPos; }
const Vector3 foo() { return pos; }
const Vector3 zoo() { return get_pos(); }
Vector3 mPos;
};


void main()
{
Hoge h;
Vector3 vec;
vec = h.zoo(); // ok
vec = h.foo(); // runtime exception
}
-----------------------------------------------------------


I found difference of foo and zoo in bytecode.


__Hoge_foo.txt

Temps: 1

0 0 * PUSH 1
1 1 * PshV4 v0
2 2 * CALLSYS 17 (void _builtin_object_::_beh_4_())
- 11,27 -
4 1 * SUSPEND
5 1 * PSF v0
6 2 * CALLINTF 86 (const Vector3 Hoge::get_pos())
8 1 * STOREOBJ v1
9 1 * LOADOBJ v1
10 1 * 0:
10 1 * FREE v0, 11276368
12 0 * RET 1


__Hoge_zoo.txt

Temps: 1

0 0 * PUSH 1
1 1 * PshV4 v0
2 2 * CALLSYS 17 (void _builtin_object_::_beh_4_())
- 12,27 -
4 1 * SUSPEND
5 1 * PshV4 v0
6 2 * CALLINTF 86 (const Vector3 Hoge::get_pos())
8 1 * STOREOBJ v1
9 1 * LOADOBJ v1
10 1 * 0:
10 1 * FREE v0, 11276368
12 0 * RET 1


Is this correct?

Share this post


Link to post
Share on other sites

This topic is 2830 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.

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