Skip to content

Commit ae6dd09

Browse files
committed
* ext/win32ole/win32ole.c (ole_type_progid, reg_enum_key,
reg_get_val, ole_wc2mb): fix the bug. Thanks, arton. [ruby-dev:31576] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@13389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent 27c7fd9 commit ae6dd09

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

ChangeLog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
Fri Sep 7 16:09:39 2007 Masaki Suketa <masaki.suketa@nifty.ne.jp>
2+
3+
* ext/win32ole/win32ole.c (ole_type_progid, reg_enum_key,
4+
reg_get_val, ole_wc2mb): fix the bug. Thanks, arton.
5+
[ruby-dev:31576]
6+
17
Fri Sep 7 15:50:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
28

39
* eval.c (mnew): should preserve noex as safe_level.

ext/win32ole/win32ole.c

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979

8080
#define WC2VSTR(x) ole_wc2vstr((x), TRUE)
8181

82-
#define WIN32OLE_VERSION "0.7.1"
82+
#define WIN32OLE_VERSION "0.7.2"
8383

8484
typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX)
8585
(REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*);
@@ -477,8 +477,9 @@ ole_wc2mb(pw)
477477
LPSTR pm;
478478
size = WideCharToMultiByte(cWIN32OLE_cp, 0, pw, -1, NULL, 0, NULL, NULL);
479479
if (size) {
480-
pm = ALLOC_N(char, size);
480+
pm = ALLOC_N(char, size + 1);
481481
WideCharToMultiByte(cWIN32OLE_cp, 0, pw, -1, pm, size, NULL, NULL);
482+
pm[size] = '\0';
482483
}
483484
else {
484485
pm = ALLOC_N(char, 1);
@@ -1138,12 +1139,13 @@ reg_enum_key(hkey, i)
11381139
HKEY hkey;
11391140
DWORD i;
11401141
{
1141-
char buf[BUFSIZ];
1142-
DWORD size_buf = sizeof(buf);
1142+
char buf[BUFSIZ + 1];
1143+
DWORD size_buf = sizeof(buf) - 1;
11431144
FILETIME ft;
11441145
LONG err = RegEnumKeyEx(hkey, i, buf, &size_buf,
11451146
NULL, NULL, NULL, &ft);
11461147
if(err == ERROR_SUCCESS) {
1148+
buf[BUFSIZ] = '\0';
11471149
return rb_str_new2(buf);
11481150
}
11491151
return Qnil;
@@ -1154,10 +1156,11 @@ reg_get_val(hkey, subkey)
11541156
HKEY hkey;
11551157
const char *subkey;
11561158
{
1157-
char buf[BUFSIZ];
1158-
LONG size_buf = sizeof(buf);
1159+
char buf[BUFSIZ + 1];
1160+
LONG size_buf = sizeof(buf) - 1;
11591161
LONG err = RegQueryValue(hkey, subkey, buf, &size_buf);
11601162
if (err == ERROR_SUCCESS) {
1163+
buf[BUFSIZ] = '\0';
11611164
return rb_str_new2(buf);
11621165
}
11631166
return Qnil;
@@ -3618,8 +3621,10 @@ ole_type_progid(pTypeInfo)
36183621
if (FAILED(hr))
36193622
return progid;
36203623
hr = ProgIDFromCLSID(&pTypeAttr->guid, &pbuf);
3621-
if (SUCCEEDED(hr))
3622-
progid = WC2VSTR(pbuf);
3624+
if (SUCCEEDED(hr)) {
3625+
progid = ole_wc2vstr(pbuf, FALSE);
3626+
CoTaskMemFree(pbuf);
3627+
}
36233628
OLE_RELEASE_TYPEATTR(pTypeInfo, pTypeAttr);
36243629
return progid;
36253630
}

version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#define RUBY_RELEASE_DATE "2007-09-07"
33
#define RUBY_VERSION_CODE 186
44
#define RUBY_RELEASE_CODE 20070907
5-
#define RUBY_PATCHLEVEL 94
5+
#define RUBY_PATCHLEVEL 95
66

77
#define RUBY_VERSION_MAJOR 1
88
#define RUBY_VERSION_MINOR 8

0 commit comments

Comments
 (0)