overload 함수를 사용하는 경우 shutdown후에 생기는 문제.

7 views
Skip to first unread message

zeniroy

unread,
Apr 22, 2008, 2:55:05 AM4/22/08
to squirrelusers-kr
sqplus에서 overload함수를 등록시키면..
sqplus 내부에서는 static 변수에 저장을 시키는데..

만일 이때 등록할때 사용했던 vm을 shutdown시키고 나서
같은 내용을 새로운 vm에 등록하게되면 문제가 발생합니다.

shutdown을 하면서 vm은 자신에게 등록된 object들을 모두 해제시키는 것 같은데..
이때 overload함수를 가지는 static 변수가 SquirrelObject라서
이것 또한 등록되어 있다가 같이 해제되는 것으로 보입니다.

즉 vm을 shutdown후에 다시 init하여 새로 만들었을때
독립적인 vm이 되야하는데 overload함수의 경우 그것이 보장되지 않는 것 같습니다.
제가 보기엔 구현이 이런 점을 고려하지 않고 이루어진것 같은데..
다른 분들의 생각은 어떠신지요?

현재는 overload를 사용하지 않는 것으로 일단 정해놨는데,
vm의 독립성을 보장할 다른 방도가 있을까요?

yagur

unread,
May 16, 2008, 8:46:23 PM5/16/08
to squirrelusers-kr

아래와 같이 간단히 테스트 해보았습니다.

SquirrelVM::Init();
HSQUIRRELVM vm = globalFuncOverloader().v;
SquirrelVM::Shutdown();
SquirrelVM::Init();
vm = globalFuncOverloader().v;
SquirrelVM::Shutdown();

vm이 셧다운하고 Init해도 변하지 않더군요.
내부 구현을 들여다 보니 static 변수들이 문제인듯합니다. 일단 overload를 sqplus에서 구현에만 의미를둔 결과물인
듯합니다. 멀티 VM을 지원하게 하려면 여러가지 손대줘야 할듯합니다.
SquirrelVM의 함수들이 전부 static인 부분도 불만이고, 이 overload도 불만스럽군요.
혹시 누가 overload 수정하신분 있으신가요?
Reply all
Reply to author
Forward
0 new messages