* バグ報告 [#fbc90ba3] #contents ** 自分自身のプロパティアクセサを呼び出すとフリーズ [#x7fb62c5] - ライブラリバージョン : r564 :コールトレース| #code(){{ 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 }} :ASコード| #code(c,){{ 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(); } }} #hr #code(c,){{ 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 } }} __Hoge_foo.txt #code(){{ 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 #code(,){{ 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 }} ** opAssignを定義するとコンパイル時にAssert [#c92f9374] - ライブラリバージョン : 2.18.1 :エラーメッセージ| Assertion failed: tempVariables.GetLength() == 0, file ..\..\source\as_compiler.cpp, line 643 :コールトレース| #code(){{ msvcr80d.dll!_wassert(const wchar_t * expr=0x007013cc, const wchar_t * filename=0x00701174, unsigned int lineno=643) 行 212 C GameProject.exe!asCCompiler::CompileStatementBlock(asCScriptNode * block=0x0a8c1640, bool ownVariableScope=false, bool * hasReturn=0x0012b2e3, asCByteCode * bc=0x0012b2a0) 行 643 + 0x29 バイト C++ GameProject.exe!asCCompiler::CompileFunction(asCBuilder * builder=0x0a8e2b08, asCScriptCode * script=0x0a8e2800, asCScriptNode * func=0x0a8e2878, asCScriptFunction * outFunc=0x0a8e3c10) 行 324 C++ GameProject.exe!asCBuilder::CompileFunctions() 行 524 C++ GameProject.exe!asCBuilder::Build() 行 184 C++ }} :ASコード| #code(c,){{ class Hoge { int mValue; Hoge() { mValue = 0; } Hoge@ opAssign(const Hoge &in aObj) { mValue = aObj.mValue; return @this; } }; void main() { Hoge a = Hoge(); } }} |