Dear,

In PdfMutexWrapper.h, the "throw rError;" from within the destructor should 
really be removed.  Destructors should never ever throw (or here re-throw) 
because if that happens very weird things will follow, no matter if and how 
calling code catch the exception and tries to recover.

PdfMutexWrapper::~PdfMutexWrapper()
{
#if defined(DEBUG)
    try {
        m_rMutex.UnLock();
    }
    catch( PdfError & rError ) 
    {
        rError.PrintErrorMsg();
        //throw rError; // Should be commented out or removed
    }
#else
    m_rMutex.UnLock();
#endif
}

Better yet, the try / catch block on m_rMutex.Unlock() (which can throw) should 
be set on, wether or not this is a debug build. It is even more important on a 
release build that the destructor does not throw than in a debug build where it 
could be wanted for the debugger to catch.

I would suggest to change that to:

PdfMutexWrapper::~PdfMutexWrapper()
{
    try {
        m_rMutex.UnLock();
    }
#if defined(DEBUG)
    catch( PdfError & rError )
    {
        rError.PrintErrorMsg();
    }
#else
    catch (PdfError &)
    {
    }
#endif
}

-- 
Best Regards, Meilleures salutations, Met vriendelijke groeten,
Olivier Mascia



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Podofo-users mailing list
Podofo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/podofo-users

Reply via email to