Warning C33004
VARIANT 'var', which is marked as
_Out_
was cleared before being initialized (expression 'expr')
Remarks
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
Example
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
// ......
}