Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
wine
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Package registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Lorenzo Ferrillo
wine
Commits
a5582d77
Commit
a5582d77
authored
14 years ago
by
Nikolay Sivov
Committed by
Alexandre Julliard
14 years ago
Browse files
Options
Downloads
Patches
Plain Diff
oleaut32/tests: Fix safearray leaks, test return value after array destruction.
parent
7ee7f084
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
dlls/oleaut32/tests/safearray.c
+62
-25
62 additions, 25 deletions
dlls/oleaut32/tests/safearray.c
dlls/oleaut32/tests/tmarshal.c
+1
-0
1 addition, 0 deletions
dlls/oleaut32/tests/tmarshal.c
dlls/oleaut32/tests/usrmarshal.c
+23
-9
23 additions, 9 deletions
dlls/oleaut32/tests/usrmarshal.c
with
86 additions
and
34 deletions
dlls/oleaut32/tests/safearray.c
+
62
−
25
View file @
a5582d77
...
...
@@ -219,9 +219,11 @@ static void check_for_VT_INT_PTR(void)
bound
.
lLbound
=
0
;
a
=
SafeArrayCreate
(
VT_INT_PTR
,
1
,
&
bound
);
if
(
a
)
{
HRESULT
hres
;
trace
(
"VT_INT_PTR is supported
\n
"
);
HAVE_OLEAUT32_INT_PTR
=
TRUE
;
SafeArrayDestroy
(
a
);
hres
=
SafeArrayDestroy
(
a
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
else
{
trace
(
"VT_INT_PTR is not supported
\n
"
);
...
...
@@ -944,7 +946,8 @@ test_LockUnlock_Vector:
bVector
?
"vector "
:
"
\n
"
,
count
,
hres
);
}
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
if
(
bVector
==
FALSE
&&
pSafeArrayCreateVector
)
...
...
@@ -1079,7 +1082,8 @@ static void test_SafeArrayGetPutElement(void)
}
}
}
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
static
void
test_SafeArrayGetPutElement_BSTR
(
void
)
...
...
@@ -1113,7 +1117,8 @@ static void test_SafeArrayGetPutElement_BSTR(void)
ok
(
hres
==
S_OK
,
"Failed to get bstr element at hres 0x%x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
ok
(
SysStringLen
(
value
)
==
SysStringLen
(
gotvalue
),
"Got len %d instead of %d
\n
"
,
SysStringLen
(
gotvalue
),
SysStringLen
(
value
));
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
SysFreeString
(
value
);
SysFreeString
(
gotvalue
);
}
...
...
@@ -1174,7 +1179,8 @@ static void test_SafeArrayGetPutElement_IUnknown(void)
ok
(
hres
==
S_OK
,
"Failed to get bstr element at hres 0x%x
\n
"
,
hres
);
if
(
hres
==
S_OK
)
ok
(
value
==
gotvalue
,
"Got %p instead of %p
\n
"
,
gotvalue
,
value
);
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
ok
(
tunk_xref
==
2
,
"Failed to decrement refcount of iface.
\n
"
);
}
...
...
@@ -1208,7 +1214,8 @@ static void test_SafeArrayRedim_IUnknown(void)
hres
=
SafeArrayRedim
(
sa
,
&
sab
);
ok
(
hres
==
S_OK
,
"Failed to shrink array hres 0x%x
\n
"
,
hres
);
ok
(
tunk_xref
==
1
,
"Failed to decrement refcount
\n
"
);
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
static
void
test_SafeArrayGetPutElement_VARIANT
(
void
)
...
...
@@ -1248,7 +1255,8 @@ static void test_SafeArrayGetPutElement_VARIANT(void)
if
(
V_VT
(
&
value
)
==
V_VT
(
&
gotvalue
))
ok
(
V_I4
(
&
value
)
==
V_I4
(
&
gotvalue
),
"Got %d instead of %d
\n
"
,
V_I4
(
&
value
),
V_VT
(
&
gotvalue
));
}
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
...
...
@@ -1323,7 +1331,8 @@ static void test_SafeArrayCopyData(void)
ok
(
hres
==
E_INVALIDARG
,
"Smaller copy last dimension hres 0x%x
\n
"
,
hres
);
sacopy
->
rgsabound
[
3
].
cElements
+=
1
;
SafeArrayDestroy
(
sacopy
);
hres
=
SafeArrayDestroy
(
sacopy
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
sacopy
=
NULL
;
hres
=
pSafeArrayCopyData
(
sa
,
sacopy
);
ok
(
hres
==
E_INVALIDARG
,
"->Null copy hres 0x%x
\n
"
,
hres
);
...
...
@@ -1335,10 +1344,12 @@ static void test_SafeArrayCopyData(void)
ok
(
SafeArrayGetElemsize
(
sa
)
==
SafeArrayGetElemsize
(
sacopy
),
"elemsize wrong
\n
"
);
ok
(
SafeArrayGetDim
(
sa
)
==
SafeArrayGetDim
(
sacopy
),
"dimensions wrong
\n
"
);
ok
(
!
memcmp
(
sa
->
pvData
,
sacopy
->
pvData
,
size
*
sizeof
(
int
)),
"compared different
\n
"
);
SafeArrayDestroy
(
sacopy
);
hres
=
SafeArrayDestroy
(
sacopy
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
static
void
test_SafeArrayCreateEx
(
void
)
...
...
@@ -1391,7 +1402,8 @@ static void test_SafeArrayCreateEx(void)
ok
(
hres
==
S_OK
&&
IsEqualGUID
(
&
guid
,
&
IID_IUnknown
),
"Set bad IID
\n
"
);
}
}
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
sa
=
pSafeArrayCreateEx
(
VT_DISPATCH
,
1
,
sab
,
NULL
);
...
...
@@ -1409,7 +1421,8 @@ static void test_SafeArrayCreateEx(void)
ok
(
IsEqualGUID
(
&
guid
,
&
IID_IDispatch
),
"CreateEx (NULL) bad IID
\n
"
);
}
}
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
sa
=
pSafeArrayCreateEx
(
VT_UNKNOWN
,
1
,
sab
,
NULL
);
...
...
@@ -1427,7 +1440,8 @@ static void test_SafeArrayCreateEx(void)
ok
(
IsEqualGUID
(
&
guid
,
&
IID_IUnknown
),
"CreateEx (NULL-Unk) bad IID
\n
"
);
}
}
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
/* VT_RECORD failure case */
...
...
@@ -1446,7 +1460,8 @@ static void test_SafeArrayCreateEx(void)
if
(
sa
)
{
ok
(
sa
->
cbElements
==
RECORD_SIZE_FAIL
,
"Altered size to %d
\n
"
,
sa
->
cbElements
);
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
ok
(
iRec
->
clearCalled
==
sab
[
0
].
cElements
,
"Destroy->Clear called %d times
\n
"
,
iRec
->
clearCalled
);
}
...
...
@@ -1473,13 +1488,19 @@ static void test_SafeArrayCreateEx(void)
ok
(
sa
->
cbElements
==
RECORD_SIZE
,
"Elemsize is %d
\n
"
,
sa
->
cbElements
);
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
ok
(
iRec
->
sizeCalled
==
1
,
"Destroy->GetSize called %d times
\n
"
,
iRec
->
sizeCalled
);
ok
(
iRec
->
clearCalled
==
sab
[
0
].
cElements
,
"Destroy->Clear called %d times
\n
"
,
iRec
->
clearCalled
);
ok
(
iRec
->
ref
==
START_REF_COUNT
,
"Wrong iRec refcount %d
\n
"
,
iRec
->
ref
);
}
else
SafeArrayDestroy
(
sa
);
{
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
IRecordInfo_Release
(
&
iRec
->
IRecordInfo_iface
);
}
static
void
test_SafeArrayClear
(
void
)
...
...
@@ -1518,7 +1539,8 @@ static void test_SafeArrayClear(void)
hres
=
VariantClear
(
&
v
);
ok
(
hres
==
DISP_E_BADVARTYPE
,
"VariantClear: hres 0x%x
\n
"
,
hres
);
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
static
void
test_SafeArrayCopy
(
void
)
...
...
@@ -1554,8 +1576,10 @@ static void test_SafeArrayCopy(void)
"VariantCopy: hres 0x%x, Type %d
\n
"
,
hres
,
V_VT
(
&
vDst
));
ok
(
V_ARRAY
(
&
vDst
)
!=
sa
,
"VariantClear: Performed shallow copy
\n
"
);
SafeArrayDestroy
(
V_ARRAY
(
&
vSrc
));
SafeArrayDestroy
(
V_ARRAY
(
&
vDst
));
hres
=
SafeArrayDestroy
(
V_ARRAY
(
&
vSrc
));
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
hres
=
SafeArrayDestroy
(
V_ARRAY
(
&
vDst
));
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
hres
=
SafeArrayAllocDescriptor
(
1
,
&
sa
);
ok
(
hres
==
S_OK
,
"SafeArrayAllocDescriptor failed with error 0x%08x
\n
"
,
hres
);
...
...
@@ -1568,8 +1592,10 @@ static void test_SafeArrayCopy(void)
hres
=
SafeArrayCopy
(
sa
,
&
sa2
);
ok
(
hres
==
S_OK
,
"SafeArrayCopy failed with error 0x%08x
\n
"
,
hres
);
SafeArrayDestroy
(
sa2
);
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa2
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
}
#define MKARRAY(low,num,typ) sab.lLbound = low; sab.cElements = num; \
...
...
@@ -1605,7 +1631,8 @@ static void test_SafeArrayChangeTypeEx(void)
}
/* VT_VECTOR|VT_UI1 -> VT_BSTR */
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
if
(
pSafeArrayCreateVector
)
{
sa
=
pSafeArrayCreateVector
(
VT_UI1
,
0
,
strlen
(
szHello
)
+
1
);
...
...
@@ -1640,7 +1667,15 @@ static void test_SafeArrayChangeTypeEx(void)
if
(
vt
==
VT_UI1
)
continue
;
MKARRAYCONT
(
0
,
1
,
vt
);
sab
.
lLbound
=
0
;
sab
.
cElements
=
1
;
sa
=
SafeArrayCreate
(
vt
,
1
,
&
sab
);
if
(
!
sa
)
continue
;
V_VT
(
&
v
)
=
VT_ARRAY
|
vt
;
V_ARRAY
(
&
v
)
=
sa
;
VariantInit
(
&
v2
);
hres
=
VariantChangeTypeEx
(
&
v2
,
&
v
,
0
,
0
,
VT_BSTR
);
ok
(
hres
!=
S_OK
,
"CTE VT_ARRAY|VT %d->BSTR succeeded
\n
"
,
vt
);
VariantClear
(
&
v2
);
...
...
@@ -1663,7 +1698,8 @@ static void test_SafeArrayChangeTypeEx(void)
ok
(
hres
==
DISP_E_TYPEMISMATCH
,
"CTE VT_ARRAY|VT_UI1->VT_ARRAY|VT_I1 returned %x
\n
"
,
hres
);
/* But can change to the same array type */
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
sa
=
pSafeArrayCreateVector
(
VT_UI1
,
0
,
1
);
ok
(
sa
!=
NULL
,
"CreateVector() failed.
\n
"
);
if
(
!
sa
)
...
...
@@ -1672,7 +1708,8 @@ static void test_SafeArrayChangeTypeEx(void)
V_ARRAY
(
&
v
)
=
sa
;
hres
=
VariantChangeTypeEx
(
&
v2
,
&
v
,
0
,
0
,
VT_ARRAY
|
VT_UI1
);
ok
(
hres
==
S_OK
,
"CTE VT_ARRAY|VT_UI1->VT_ARRAY|VT_UI1 returned %x
\n
"
,
hres
);
SafeArrayDestroy
(
sa
);
hres
=
SafeArrayDestroy
(
sa
);
ok
(
hres
==
S_OK
,
"got 0x%08x
\n
"
,
hres
);
VariantClear
(
&
v2
);
}
...
...
This diff is collapsed.
Click to expand it.
dlls/oleaut32/tests/tmarshal.c
+
1
−
0
View file @
a5582d77
...
...
@@ -1099,6 +1099,7 @@ static void test_typelibmarshal(void)
ok
(
V_VT
(
&
varresult
)
==
VT_BSTR
,
"Return value should be of type BSTR instead of %d
\n
"
,
V_VT
(
&
varresult
));
ok
(
!
lstrcmpW
(
V_BSTR
(
&
varresult
),
szTestTest
),
"Return value should have been
\"
TestTest
\"
instead of %s
\n
"
,
wine_dbgstr_w
(
V_BSTR
(
&
varresult
)));
VariantClear
(
&
varresult
);
SysFreeString
(
bstr
);
/* call SetOleColor with large negative VT_I4 param */
VariantInit
(
&
vararg
[
0
]);
...
...
This diff is collapsed.
Click to expand it.
dlls/oleaut32/tests/usrmarshal.c
+
23
−
9
View file @
a5582d77
...
...
@@ -256,6 +256,7 @@ static void test_marshal_LPSAFEARRAY(void)
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
buffer
,
size
,
MSHCTX_DIFFERENTMACHINE
);
next
=
LPSAFEARRAY_UserMarshal
(
&
umcb
.
Flags
,
buffer
,
&
lpsa
);
ok
(
next
-
buffer
==
expected
,
"Marshaled %u bytes, expected %u
\n
"
,
(
ULONG
)
(
next
-
buffer
),
expected
);
ok
(
lpsa
->
cLocks
==
7
,
"got lock count %u
\n
"
,
lpsa
->
cLocks
);
check_safearray
(
buffer
,
lpsa
);
...
...
@@ -268,12 +269,14 @@ static void test_marshal_LPSAFEARRAY(void)
SafeArrayGetVartype
(
lpsa
,
&
vt
);
SafeArrayGetVartype
(
lpsa2
,
&
vt2
);
ok
(
vt
==
vt2
,
"vts differ %x %x
\n
"
,
vt
,
vt2
);
todo_wine
ok
(
lpsa2
->
cLocks
==
0
,
"got lock count %u, expected 0
\n
"
,
lpsa2
->
cLocks
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
LPSAFEARRAY_UserFree
(
&
umcb
.
Flags
,
&
lpsa2
);
}
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
lpsa
->
cLocks
=
0
;
SafeArrayDestroy
(
lpsa
);
hr
=
SafeArrayDestroy
(
lpsa
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/* use two dimensions */
sab
[
0
].
lLbound
=
5
;
...
...
@@ -300,6 +303,7 @@ static void test_marshal_LPSAFEARRAY(void)
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
buffer
,
size
,
MSHCTX_DIFFERENTMACHINE
);
next
=
LPSAFEARRAY_UserMarshal
(
&
umcb
.
Flags
,
buffer
,
&
lpsa
);
ok
(
next
-
buffer
==
expected
,
"Marshaled %u bytes, expected %u
\n
"
,
(
ULONG
)
(
next
-
buffer
),
expected
);
ok
(
lpsa
->
cLocks
==
7
,
"got lock count %u
\n
"
,
lpsa
->
cLocks
);
check_safearray
(
buffer
,
lpsa
);
...
...
@@ -312,12 +316,14 @@ static void test_marshal_LPSAFEARRAY(void)
SafeArrayGetVartype
(
lpsa
,
&
vt
);
SafeArrayGetVartype
(
lpsa2
,
&
vt2
);
ok
(
vt
==
vt2
,
"vts differ %x %x
\n
"
,
vt
,
vt2
);
todo_wine
ok
(
lpsa2
->
cLocks
==
0
,
"got lock count %u, expected 0
\n
"
,
lpsa2
->
cLocks
);
init_user_marshal_cb
(
&
umcb
,
&
stub_msg
,
&
rpc_msg
,
NULL
,
0
,
MSHCTX_DIFFERENTMACHINE
);
LPSAFEARRAY_UserFree
(
&
umcb
.
Flags
,
&
lpsa2
);
}
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
lpsa
->
cLocks
=
0
;
SafeArrayDestroy
(
lpsa
);
hr
=
SafeArrayDestroy
(
lpsa
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/* test NULL safe array */
lpsa
=
NULL
;
...
...
@@ -371,7 +377,8 @@ static void test_marshal_LPSAFEARRAY(void)
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
lpsa
->
cLocks
=
0
;
SafeArrayDestroy
(
lpsa
);
hr
=
SafeArrayDestroy
(
lpsa
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/* VARTYPE-less arrays can be marshaled if cbElements is 1,2,4 or 8 as type SF_In */
hr
=
SafeArrayAllocDescriptor
(
1
,
&
lpsa
);
...
...
@@ -398,8 +405,10 @@ static void test_marshal_LPSAFEARRAY(void)
"Marshaled %u bytes, expected %u
\n
"
,
(
ULONG
)
(
next
-
buffer
),
expected
);
check_safearray
(
buffer
,
lpsa
);
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
SafeArrayDestroyData
(
lpsa
);
SafeArrayDestroyDescriptor
(
lpsa
);
hr
=
SafeArrayDestroyData
(
lpsa
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
hr
=
SafeArrayDestroyDescriptor
(
lpsa
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/* Test an array of VT_BSTR */
sab
[
0
].
lLbound
=
3
;
...
...
@@ -479,7 +488,8 @@ static void test_marshal_LPSAFEARRAY(void)
}
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
SafeArrayDestroy
(
lpsa
);
hr
=
SafeArrayDestroy
(
lpsa
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/* VARTYPE-less arrays with FADF_VARIANT */
hr
=
SafeArrayAllocDescriptor
(
1
,
&
lpsa
);
...
...
@@ -509,8 +519,10 @@ static void test_marshal_LPSAFEARRAY(void)
lpsa
->
cbElements
=
16
;
/* VARIANT wire size */
check_safearray
(
buffer
,
lpsa
);
HeapFree
(
GetProcessHeap
(),
0
,
buffer
);
SafeArrayDestroyData
(
lpsa
);
SafeArrayDestroyDescriptor
(
lpsa
);
hr
=
SafeArrayDestroyData
(
lpsa
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
hr
=
SafeArrayDestroyDescriptor
(
lpsa
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
}
static
void
check_bstr
(
void
*
buffer
,
BSTR
b
)
...
...
@@ -765,6 +777,7 @@ static void test_marshal_VARIANT(void)
DECIMAL
dec
,
dec2
;
HeapUnknown
*
heap_unknown
;
DWORD
expected
;
HRESULT
hr
;
stubMsg
.
RpcMsg
=
&
rpcMsg
;
...
...
@@ -1394,7 +1407,8 @@ static void test_marshal_VARIANT(void)
VARIANT_UserFree
(
&
umcb
.
Flags
,
&
v2
);
}
HeapFree
(
GetProcessHeap
(),
0
,
oldbuffer
);
SafeArrayDestroy
(
lpsa
);
hr
=
SafeArrayDestroy
(
lpsa
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/*** VARIANT BYREF ***/
VariantInit
(
&
v
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment