From 707ff7bfb715d7caa7766041cea8bad6e8ca43a0 Mon Sep 17 00:00:00 2001 From: suke Date: Thu, 7 Aug 2014 12:52:25 +0000 Subject: [PATCH] * ext/win32ole/win32ole_typelib.c (foletypelib_version): return version string. * test/win32ole/test_win32ole_typelib.rb (test_version): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++ ext/win32ole/win32ole_typelib.c | 60 +++++++++++++------------- test/win32ole/test_win32ole_typelib.rb | 2 +- 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6f0f6d0d23..bddcc28366 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Thu Aug 7 21:42:49 2014 Masaki Suketa + + * ext/win32ole/win32ole_typelib.c (foletypelib_version): return + version string. + + * test/win32ole/test_win32ole_typelib.rb (test_version): ditto. + Thu Aug 7 15:13:13 2014 SHIBATA Hiroshi * lib/cgi.rb: remove needless condition for old ruby version. diff --git a/ext/win32ole/win32ole_typelib.c b/ext/win32ole/win32ole_typelib.c index 2becbfdf45..fc164f2e02 100644 --- a/ext/win32ole/win32ole_typelib.c +++ b/ext/win32ole/win32ole_typelib.c @@ -299,34 +299,34 @@ oletypelib_search_registry2(VALUE self, VALUE args) RegCloseKey(hversion); } else { fver = 0.0; - for(j = 0; ;j++) { - ver = reg_enum_key(hguid, j); - if (ver == Qnil) - break; - err = reg_open_vkey(hguid, ver, &hversion); - if (err != ERROR_SUCCESS) - continue; - tlib = reg_get_val(hversion, NULL); - if (tlib == Qnil) { - RegCloseKey(hversion); - continue; - } - if (fver < atof(StringValuePtr(ver))) { - fver = atof(StringValuePtr(ver)); - version = ver; - typelib = tlib; - } - RegCloseKey(hversion); - } + for(j = 0; ;j++) { + ver = reg_enum_key(hguid, j); + if (ver == Qnil) + break; + err = reg_open_vkey(hguid, ver, &hversion); + if (err != ERROR_SUCCESS) + continue; + tlib = reg_get_val(hversion, NULL); + if (tlib == Qnil) { + RegCloseKey(hversion); + continue; + } + if (fver < atof(StringValuePtr(ver))) { + fver = atof(StringValuePtr(ver)); + version = ver; + typelib = tlib; + } + RegCloseKey(hversion); + } } RegCloseKey(hguid); RegCloseKey(htypelib); if (typelib != Qnil) { - hr = oletypelib_from_guid(guid, version, &pTypeLib); - if (SUCCEEDED(hr)) { - found = Qtrue; - oletypelib_set_member(self, pTypeLib); - } + hr = oletypelib_from_guid(guid, version, &pTypeLib); + if (SUCCEEDED(hr)) { + found = Qtrue; + oletypelib_set_member(self, pTypeLib); + } } return found; } @@ -472,27 +472,25 @@ make_version_str(VALUE major, VALUE minor) /* * call-seq: - * WIN32OLE_TYPELIB#version -> The type library version. + * WIN32OLE_TYPELIB#version -> The type library version String object. * * Returns the type library version. * * tlib = WIN32OLE_TYPELIB.new('Microsoft Excel 9.0 Object Library') - * puts tlib.version #-> 1.3 + * puts tlib.version #-> "1.3" */ static VALUE foletypelib_version(VALUE self) { TLIBATTR *pTLibAttr; - VALUE major; - VALUE minor; ITypeLib *pTypeLib; + VALUE version; pTypeLib = itypelib(self); oletypelib_get_libattr(pTypeLib, &pTLibAttr); - major = INT2NUM(pTLibAttr->wMajorVerNum); - minor = INT2NUM(pTLibAttr->wMinorVerNum); + version = rb_sprintf("%d.%d", pTLibAttr->wMajorVerNum, pTLibAttr->wMinorVerNum); pTypeLib->lpVtbl->ReleaseTLibAttr(pTypeLib, pTLibAttr); - return rb_Float(make_version_str(major, minor)); + return version; } /* diff --git a/test/win32ole/test_win32ole_typelib.rb b/test/win32ole/test_win32ole_typelib.rb index 09a7f32c88..a548bc1534 100644 --- a/test/win32ole/test_win32ole_typelib.rb +++ b/test/win32ole/test_win32ole_typelib.rb @@ -66,7 +66,7 @@ if defined?(WIN32OLE_TYPELIB) def test_version tlib = WIN32OLE_TYPELIB.new("Microsoft Shell Controls And Automation") - assert_equal(1.0, tlib.version) + assert_equal("1.0", tlib.version) end def test_major_version