Issue #5334 has been updated by phasis68 (Heesob Park).


This segmentation fault raised at #4396 of win32ole.c
    hr = pole->pDispatch->lpVtbl->GetTypeInfo( pole->pDispatch, 0, lcid, &pTypeInfo );

According to the document(http://msdn.microsoft.com/en-us/library/cc678965(v=vs.85).aspx),
the IServiceProvider interface has only one member, QueryService, through which a caller specifies the service ID (SID, a GUID), the IID of the interface to return, and the address of the caller's interface pointer variable.

The IServiceProvider interface does not have GetTypeInfo member function, so you cannot use WIN32OLE#ole_type or WIN32OLE#ole_obj_help which calls GetTypeInfo function.

It seems difficult to detect which interface has GetTypeInfo member function or not in the code level.

----------------------------------------
Bug #5334: Segmentation fault in InternetExplorer IServiceProvider interface
https://bugs.ruby-lang.org/issues/5334#change-26131

Author: oregev (Ofer Regev)
Status: Assigned
Priority: Normal
Assignee: suke (Masaki Suketa)
Category: 
Target version: 
ruby -v: ruby 1.9.2p290 (2011-07-09) [i386-mingw32]


The following code causes a segmentation fault in Ruby 1.9.2:

require 'win32ole'
browser = WIN32OLE.new("InternetExplorer.Application")
provider = browser.ole_query_interface("{6D5140C1-7436-11CE-8034-00AA006009FA}")
provider.ole_obj_help




-- 
http://bugs.ruby-lang.org/