79
79
80
80
#define WC2VSTR (x ) ole_wc2vstr((x), TRUE)
81
81
82
- #define WIN32OLE_VERSION "0.7.1 "
82
+ #define WIN32OLE_VERSION "0.7.2 "
83
83
84
84
typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX )
85
85
(REFCLSID , IUnknown * , DWORD , COSERVERINFO * , DWORD , MULTI_QI * );
@@ -477,8 +477,9 @@ ole_wc2mb(pw)
477
477
LPSTR pm ;
478
478
size = WideCharToMultiByte (cWIN32OLE_cp , 0 , pw , -1 , NULL , 0 , NULL , NULL );
479
479
if (size ) {
480
- pm = ALLOC_N (char , size );
480
+ pm = ALLOC_N (char , size + 1 );
481
481
WideCharToMultiByte (cWIN32OLE_cp , 0 , pw , -1 , pm , size , NULL , NULL );
482
+ pm [size ] = '\0' ;
482
483
}
483
484
else {
484
485
pm = ALLOC_N (char , 1 );
@@ -1138,12 +1139,13 @@ reg_enum_key(hkey, i)
1138
1139
HKEY hkey ;
1139
1140
DWORD i ;
1140
1141
{
1141
- char buf [BUFSIZ ];
1142
- DWORD size_buf = sizeof (buf );
1142
+ char buf [BUFSIZ + 1 ];
1143
+ DWORD size_buf = sizeof (buf ) - 1 ;
1143
1144
FILETIME ft ;
1144
1145
LONG err = RegEnumKeyEx (hkey , i , buf , & size_buf ,
1145
1146
NULL , NULL , NULL , & ft );
1146
1147
if (err == ERROR_SUCCESS ) {
1148
+ buf [BUFSIZ ] = '\0' ;
1147
1149
return rb_str_new2 (buf );
1148
1150
}
1149
1151
return Qnil ;
@@ -1154,10 +1156,11 @@ reg_get_val(hkey, subkey)
1154
1156
HKEY hkey ;
1155
1157
const char * subkey ;
1156
1158
{
1157
- char buf [BUFSIZ ];
1158
- LONG size_buf = sizeof (buf );
1159
+ char buf [BUFSIZ + 1 ];
1160
+ LONG size_buf = sizeof (buf ) - 1 ;
1159
1161
LONG err = RegQueryValue (hkey , subkey , buf , & size_buf );
1160
1162
if (err == ERROR_SUCCESS ) {
1163
+ buf [BUFSIZ ] = '\0' ;
1161
1164
return rb_str_new2 (buf );
1162
1165
}
1163
1166
return Qnil ;
@@ -3618,8 +3621,10 @@ ole_type_progid(pTypeInfo)
3618
3621
if (FAILED (hr ))
3619
3622
return progid ;
3620
3623
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
+ }
3623
3628
OLE_RELEASE_TYPEATTR (pTypeInfo , pTypeAttr );
3624
3629
return progid ;
3625
3630
}
0 commit comments