NT4/private/ole32/com/util/utexcept.cxx
2020-09-30 17:12:29 +02:00

56 lines
1.5 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1992.
//
// File: utexcept.cxx
//
// Contents: Functions used to make exception handling nicer.
//
// Functions: SafeIUnknownRelease
//
// History: 22-Jan-93 Ricksa Created
//
//--------------------------------------------------------------------------
#include <ole2int.h>
//+-------------------------------------------------------------------------
//
// Function: SafeIUnknownRelease
//
// Synopsis: Guarantees that an IUnknown can be released without
// causing an to be thrown outside of this routine.
//
// Arguments: [pUnk] - pointer to interface instance to release
//
// Algorithm: Verify pointer is not NULL then call its Release operation
// inside of a try block.
//
// History: 22-Jan-93 Ricksa Created
//
// Notes: This exists because we are working under the assumption
// that Release (like close on a file) cannot really fail.
// And that if it does fail it should be ignored. This function
// isn't really necessary, its purpose is simply to make code
// smaller and easier to write by not duplicating thousands
// of tiny try blocks throughout code which must clean up
// interfaces before an exit.
//
//--------------------------------------------------------------------------
void SafeIUnknownRelease(IUnknown *pUnk)
{
TRY
{
if (pUnk)
{
pUnk->Release();
}
}
CATCH(CException, e)
{
HandleException(e);
}
END_CATCH
}