unixODBC-MSSQL/odbcinst/ODBCINSTDestructProperties.c

51 строка
1.5 KiB
C

/**************************************************
* ODBCINSTDestructProperties
*
**************************************************
* This code was created by Peter Harvey @ CodeByDesign.
* Released under LGPL 28.JAN.99
*
* Contributions from...
* -----------------------------------------------
* Peter Harvey - pharvey@codebydesign.com
**************************************************/
#include <config.h>
#include <odbcinstext.h>
int ODBCINSTDestructProperties( HODBCINSTPROPERTY *hFirstProperty )
{
HODBCINSTPROPERTY hNextProperty;
HODBCINSTPROPERTY hCurProperty;
/* SANITY CHECKS */
if ( (*hFirstProperty) == NULL )
{
inst_logPushMsg( __FILE__, __FILE__, __LINE__, LOG_CRITICAL, ODBC_ERROR_GENERAL_ERR, "Invalid property list handle" );
return ODBCINST_ERROR;
}
/* FREE MEMORY */
for ( hCurProperty = (*hFirstProperty); hCurProperty != NULL; hCurProperty = hNextProperty )
{
hNextProperty = hCurProperty->pNext;
/* FREE ANY PROMPT DATA (ie pick list options and such) */
if ( hCurProperty->aPromptData != NULL )
free( hCurProperty->aPromptData );
/* 1st PROPERTY HAS HANDLE TO DriverSetup DLL; LETS LET THE O/S KNOW WE ARE DONE WITH IT */
if ( hCurProperty == (*hFirstProperty) && hCurProperty->hDLL != NULL )
lt_dlclose( hCurProperty->hDLL );
/* FREE OTHER STUFF */
if ( hCurProperty->pszHelp != NULL )
free( hCurProperty->pszHelp );
free( hCurProperty );
}
(*hFirstProperty) = NULL;
return ODBCINST_SUCCESS;
}