掲示板で指摘されているGetDocumentationの問題は
http://sourceforge.net/p/sakura-editor/patches/152/の最後のコメントで答えが出てますが放置されてますね。
実行確認してないので申し訳ないですが、以下のような感じだと思います。
virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetDocumentation(
/* [in] */ MEMBERID memid,
/* [out] */ BSTR __RPC_FAR *pBstrName,
/* [out] */ BSTR __RPC_FAR *pBstrDocString,
/* [out] */ DWORD __RPC_FAR *pdwHelpContext,
/* [out] */ BSTR __RPC_FAR *pBstrHelpFile)
{
// Feb. 08, 2004 genta
// とりあえず全部NULLを返す (情報無し)
if(pBstrName != NULL) *pBstrName = SysAllocString(m_MethodsRef[memid].Name)
; //これでいいのかな?
//if(pBstrName != NULL) *pBstrName = SysAllocString(L"");
if(pBstrDocString != NULL) *pBstrDocString = SysAllocString(L"");
if(pdwHelpContext != NULL) *pdwHelpContext = SysAllocString(L"");
if(pBstrHelpFile != NULL) *pBstrHelpFile = SysAllocString(L"");
return S_OK ;
}
少なくとも元のpBstrName = NULL;はスタック上の変数を書き換えてるだけです。
ActiveScriptRubyの呼び出し側は
https://github.com/arton/RScript20のeventsink.cppの111行目あたりです。
最後のコメントに掲載されてるコードと同じでした。