C33004

Warning C33004: 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, which may haven't been initialized on input, is passed to an API such as VariantClear that expects an initialized VARIANT.

Example

#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
    // ......
}

See also

C33001 C33005