////
// DbgCrit.cpp
// ~~~~~~~~~~~
//
// This file holds the critical section class for tracking down whether the
// critical section has correctly left within the routine.

#include "pch.h"

#if DEBUG

SZTHISFILE

//////
//  CCritSec::CCritSec
//
//  The constructor calls EnterCriticalSection and sets up the variables
//
CCritSec::CCritSec
(
  CRITICAL_SECTION *CritSec
)
{
  EnterCriticalSection(CritSec);

  m_fLeft     = FALSE;
  m_pCriticalSection = CritSec;
} //CCritSec


//////
//  CCritSec::~CCritSec
//
//  The destructor checks the flag that tells us whether or not the
//  critical section was left properly or not.
//
CCritSec::~CCritSec
(
)
{
  if(m_fLeft == FALSE)
    FAIL("CriticalSection was not left properly.");
} //~CCritSec


//////
//  CCritSec::Left
//
//  A method that sets the flag to TRUE and also calls LeaveCriticalSection
//
void CCritSec::Left
(
  void
)
{
  LeaveCriticalSection(m_pCriticalSection);
  m_fLeft = TRUE;
} //Left

#endif // DEBUG