FREEREF

 (Available in 01 TS COM - TS_COM_ServerInfoGuard)

Source

METHOD FREEREF( ) AS TS_ServerInfo PASCAL CLASS TS_ServerInfoGuard
LOCAL oCOMGlobalData AS _TS_COMGlobalData
LOCAL oServerInfo AS TS_ServerInfo
   TSTrace Enter
   oCOMGlobalData:=_TS_ModuleGetCOMGlobalData( )
   #IFDEF TS_COMGLOBALDATA_CRITICALSECTION
      EnterCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection )
   #ENDIF
   oServerInfo:=oCOMGlobalData:_ServerInfoServerInfoObject
   InterlockedDecrement( oCOMGlobalData:_ServerInfoUseCounter )
   IF LONGINT( oCOMGlobalData:_ServerInfoUseCounter )<0L
      TSTrace Warning "LONGINT(oCOMGlobalData:_ServerInfoUseCounter)<0L"
   END
   IF !LOGIC( _CAST, LONGINT( oCOMGlobalData:_ServerInfoUseCounter ) )  ; ...
  ... .AND. !LOGIC( _CAST, LONGINT( oCOMGlobalData:_ServerInfoInMessageLoop  ; ...
  ... ) )
      oCOMGlobalData:_ServerInfoServerInfoObject:=NULL_OBJECT
      IF oServerInfo<>NULL_OBJECT
         oServerInfo:UnRegisterAxit( )
         oServerInfo:Destroy( )
         oServerInfo:=NULL_OBJECT
      END
      oCOMGlobalData:_ServerInfoCoInitSet:=FALSE
      oCOMGlobalData:_ServerInfoCoInitVal:=COINIT_DEFAULT
      #IFDEF TS_COMGLOBALDATA_CRITICALSECTION
         LeaveCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection  ; ...
        ... )
      #ENDIF
   END
   oServerInfo:=NULL_OBJECT
   #IFDEF TS_COMGLOBALDATA_CRITICALSECTION
      LeaveCriticalSection( oCOMGlobalData:_COMGGeneralPurposeSection )
   #ENDIF
   TSTrace Leave
RETURN oServerInfo