title | description | author | ms.author | ms.date | f1_keywords | helpviewer_keywords | |||
---|---|---|---|---|---|---|---|---|---|
Warning C33004 |
C33004 warning for VARIANTs |
hwisungi |
hwisungi |
06/20/2020 |
|
|
VARIANT 'var', which is marked as
_Out_
was cleared before being initialized (expression 'expr')
This warning is triggered when a VARIANT
parameter with _Out_
SAL annotation may not have been
initialized on input, and is then passed to an API such as VariantClear
that expects an initialized VARIANT
.
Code analysis name: VARIANTCLEAR_UNINITOUTPARAM
The following sample code causes warning C33004:
#include <Windows.h>
void t2(_Out_ VARIANT* pv)
{
// ......
VariantClear(pv); // C33004
// ......
}
These warnings are corrected by ensuring VariantClear is called only for a properly initialized VARIANT:
#include <Windows.h>
void t2(_Out_ VARIANT* pv)
{
VariantInit(pv);
// ......
VariantClear(pv); // OK
// ......
}