ActiveScript Engine初期化の試行錯誤 (2)

もうちょっとがんばってみたところ,PythonScriptがSetScriptSiteで拗ねる理由を知ることが出来た.
lib/site-packages/win32comext/axscript/client/framework.pyにあるこのコード

	def write(self,message):
		try:
			self.redir.write(message)
		except:
			win32api.OutputDebugString(message.encode("mbcs"))

が原因だった.win32api.OutputDebugStringはunicode文字列を受け付けるのに対し,このコードはencodeでbyte列に直してしまっているため,型変換できないという例外が飛んでいたらしい.
これをencodeせずにそのまま渡すよう修正すると,上手くParseScriptTextまで到達するようになったが,PythonScriptにはまだまだトラップがあった.

CInterfaceObject::Invoke で wFlags == DISPATCH_PROPERTYGET にも反応してたのがまずいっぽい。この部分を修正すれば一応動いた。

http://miau.s9.xrea.com/blog/index.php?itemid=844

これを抜かしてInvokeを通そうとすると,アクセス違反を全員サービスされてアプリケーションがころげる.と言うか何度やってもころげるものだから,何故かと思って必死に調べてたら,こんな回避策が見つかったという次第.
しかし,これらを直してもまだトラップはなくならない.PythonScriptエンジンの作成破棄を三度ほど繰り返すと何故かアクセス違反で落ちる.参照カウントがおかしいことになっているみたいなので,もしかしたらホスト側の実装のせいかもしれない.