The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#define RETURN_ON_ERROR(x,h,s) \
if (ERROR_SUCCESS != x) { \
SimpleLogString1(h,s); \
return x; \
}
#define RETURN_ON_ERROR_FREE(x,y,h,s) \
if (ERROR_SUCCESS != x) { \
SimpleLogString1(h,s); \
free(y); \
return x; \
}
#define RETURN_ON_ERROR_FREE2(x,y,z,h,s) \
if (ERROR_SUCCESS != x) { \
SimpleLogString1(h,s); \
free(y); \
free(z); \
return x; \
}
#define RETURN_IF_NULL(x,h,s) \
if (NULL == x) { \
SimpleLogString1(h,s); \
return ERROR_INSTALL_FAILURE; \
}
#ifdef _DEBUG
#define LOG_DEBUG_DETAILS_IF_NULL(x,h) \
if (NULL == x) { \
PrintUINT(h,x); \
PrintLastErrorDetails(h); \
}
#define LOG_DEBUG_DETAILS_ON_ERROR(x,h) \
if (ERROR_SUCCESS != x) { \
PrintUINT(h,x); \
PrintLastErrorDetails(h); \
}
#else
#define LOG_DEBUG_DETAILS_IF_NULL(x,h)
#define LOG_DEBUG_DETAILS_ON_ERROR(x,h)
#endif
extern void SimpleLogString1(MSIHANDLE hModule, LPCTSTR s);
extern void SimpleLogString2(MSIHANDLE hModule, LPCTSTR s, LPCTSTR t);
extern void SimpleLogString3(MSIHANDLE hModule, LPCTSTR s, LPCTSTR t, LPCTSTR u);
extern void SimpleLogString4(MSIHANDLE hModule, LPCTSTR s, LPCTSTR t, LPCTSTR u, LPCTSTR v);
extern void PrintLastErrorDetails(MSIHANDLE hModule);
extern void PrintUINT(MSIHANDLE hModule, UINT i);