2008-08-04 22:13 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/rddads/adsfunc.c
! fixed possibly unclosed AdsCloseSQLStatement()
* harbour/contrib/rddads/ads1.c
* minor cleanup and protection against possible strange results
caused by indexes without tags
* harbour/source/rtl/hbinet.c
! added protection against using wrong handles
! fixed possible resource leak (unclosed handle) when open handle is
passed to HB_INETCONNECT[IP]()
* harbour/source/rtl/filesys.c
* cleaned warnings
This commit is contained in:
@@ -8,6 +8,22 @@
|
||||
2008-12-31 13:59 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
2008-08-04 22:13 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/contrib/rddads/adsfunc.c
|
||||
! fixed possibly unclosed AdsCloseSQLStatement()
|
||||
|
||||
* harbour/contrib/rddads/ads1.c
|
||||
* minor cleanup and protection against possible strange results
|
||||
caused by indexes without tags
|
||||
|
||||
* harbour/source/rtl/hbinet.c
|
||||
! added protection against using wrong handles
|
||||
! fixed possible resource leak (unclosed handle) when open handle is
|
||||
passed to HB_INETCONNECT[IP]()
|
||||
|
||||
* harbour/source/rtl/filesys.c
|
||||
* cleaned warnings
|
||||
|
||||
2008-08-04 20:24 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
|
||||
* include/hbdefs.h
|
||||
! Fixed 4 remaining warnings in BCC 5.8.2 builds.
|
||||
|
||||
@@ -3356,7 +3356,7 @@ static ERRCODE adsOrderListAdd( ADSAREAP pArea, LPDBORDERINFO pOrderInfo )
|
||||
( char * ) hb_itemGetCPtr( pOrderInfo->atomBagName ), EF_CANDEFAULT );
|
||||
return FAILURE;
|
||||
}
|
||||
if( !pArea->hOrdCurrent )
|
||||
if( !pArea->hOrdCurrent && u16ArrayLen > 0 )
|
||||
{
|
||||
pArea->hOrdCurrent = ahIndex[ 0 ];
|
||||
return SELF_GOTOP( ( AREAP ) pArea );
|
||||
@@ -3404,7 +3404,6 @@ static ERRCODE adsOrderListDelete( ADSAREAP pArea, LPDBORDERINFO pOrderInfo )
|
||||
}
|
||||
}
|
||||
return FAILURE;
|
||||
|
||||
}
|
||||
|
||||
static ERRCODE adsOrderListFocus( ADSAREAP pArea, LPDBORDERINFO pOrderInfo )
|
||||
@@ -3452,6 +3451,9 @@ static ERRCODE adsOrderListFocus( ADSAREAP pArea, LPDBORDERINFO pOrderInfo )
|
||||
}
|
||||
u32RetVal = AdsGetIndexHandleByOrder( pArea->hTable, u16Order, &hIndex );
|
||||
}
|
||||
else
|
||||
hIndex = pArea->hOrdCurrent;
|
||||
|
||||
if( u32RetVal != AE_SUCCESS )
|
||||
{
|
||||
/* ntx compatibilty: keep current order if failed */
|
||||
@@ -3593,16 +3595,16 @@ static ERRCODE adsOrderCreate( ADSAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
|
||||
if( fClose )
|
||||
{
|
||||
ADSHANDLE ahIndex[ 50 ];
|
||||
UNSIGNED16 pusArrayLen = 50;
|
||||
UNSIGNED16 usArrayLen = 50;
|
||||
|
||||
u32RetVal = AdsOpenIndex( pArea->hTable,
|
||||
( UNSIGNED8 * ) pOrderInfo->abBagName, ahIndex, &pusArrayLen );
|
||||
( UNSIGNED8 * ) pOrderInfo->abBagName, ahIndex, &usArrayLen );
|
||||
if( u32RetVal != AE_SUCCESS && u32RetVal != AE_INDEX_ALREADY_OPEN )
|
||||
{
|
||||
SELF_ORDSETCOND( ( AREAP ) pArea, NULL );
|
||||
return FAILURE;
|
||||
}
|
||||
pArea->hOrdCurrent = ahIndex[ 0 ];
|
||||
pArea->hOrdCurrent = usArrayLen ? ahIndex[ 0 ] : 0;
|
||||
}
|
||||
|
||||
return SELF_GOTOP( ( AREAP ) pArea );
|
||||
|
||||
@@ -1183,16 +1183,10 @@ HB_FUNC( ADSCREATESQLSTATEMENT )
|
||||
fResult = TRUE;
|
||||
}
|
||||
else
|
||||
/* QUESTION: Is this right? [vszakats] */
|
||||
hb_rddReleaseCurrentArea();
|
||||
}
|
||||
#if 0
|
||||
/* QUESTION: Shouldn't we call AdsCloseSQLStatement() if pArea was NULL? [vszakats] */
|
||||
else
|
||||
AdsCloseSQLStatement( adsStatementHandle );
|
||||
#endif
|
||||
}
|
||||
else
|
||||
if( !fResult )
|
||||
AdsCloseSQLStatement( adsStatementHandle );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2290,7 +2290,7 @@ HB_EXPORT USHORT hb_fsCurDirBuff( USHORT uiDrive, BYTE * pbyBuffer, ULONG ulLen
|
||||
{
|
||||
uiCurDrv = hb_fsCurDrv() + 1;
|
||||
if( uiDrive != uiCurDrv )
|
||||
hb_fsChDrv( ( USHORT ) ( uiDrive - 1 ) );
|
||||
hb_fsChDrv( ( BYTE ) ( uiDrive - 1 ) );
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2325,7 +2325,7 @@ HB_EXPORT USHORT hb_fsCurDirBuff( USHORT uiDrive, BYTE * pbyBuffer, ULONG ulLen
|
||||
|
||||
if( uiDrive != uiCurDrv )
|
||||
{
|
||||
hb_fsChDrv( ( USHORT ) ( uiCurDrv - 1 ) );
|
||||
hb_fsChDrv( ( BYTE ) ( uiCurDrv - 1 ) );
|
||||
hb_fsSetError( usError );
|
||||
}
|
||||
|
||||
|
||||
@@ -148,13 +148,12 @@
|
||||
#define HB_SOCKET_INIT( s, p ) \
|
||||
do { \
|
||||
s = ( HB_SOCKET_STRUCT *) hb_gcAlloc( sizeof( HB_SOCKET_STRUCT ), hb_inetSocketFinalize );\
|
||||
p = hb_itemPutPtrGC( p, s );\
|
||||
HB_SOCKET_ZERO_ERROR( s );\
|
||||
memset( s, '\0', sizeof( HB_SOCKET_STRUCT ) );\
|
||||
s->com = ( HB_SOCKET_T ) -1;\
|
||||
s->count = 0;\
|
||||
s->timeout = -1;\
|
||||
s->timelimit = -1;\
|
||||
s->caPeriodic = NULL;\
|
||||
s->errorDesc = "";\
|
||||
p = hb_itemPutPtrGC( p, s );\
|
||||
} while( 0 )
|
||||
|
||||
#ifndef MSG_NOSIGNAL
|
||||
@@ -227,6 +226,16 @@ static void hb_inetLinuxSigusrHandle( int sig )
|
||||
/* JC1: we need it volatile to be minimally thread safe. */
|
||||
static volatile int s_iSessions = 0;
|
||||
|
||||
static BOOL hb_inetIsOpen( HB_SOCKET_STRUCT *Socket )
|
||||
{
|
||||
if( Socket->com == ( HB_SOCKET_T ) -1 )
|
||||
{
|
||||
HB_SOCKET_SET_ERROR2( Socket, -4, "Closed socket" );
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Useful utility function to have a timeout; */
|
||||
|
||||
static int hb_selectReadSocket( HB_SOCKET_STRUCT *Socket )
|
||||
@@ -779,6 +788,8 @@ HB_FUNC( HB_INETGETSNDBUFSIZE )
|
||||
|
||||
if( Socket == NULL )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
hb_retni( -1 );
|
||||
else
|
||||
{
|
||||
int value;
|
||||
@@ -788,7 +799,6 @@ HB_FUNC( HB_INETGETSNDBUFSIZE )
|
||||
#else
|
||||
getsockopt( Socket->com, SOL_SOCKET, SO_SNDBUF, ( void * ) &value, &len );
|
||||
#endif
|
||||
hb_retni( value );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -798,6 +808,8 @@ HB_FUNC( HB_INETGETRCVBUFSIZE )
|
||||
|
||||
if( Socket == NULL )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
hb_retni( -1 );
|
||||
else
|
||||
{
|
||||
int value;
|
||||
@@ -817,6 +829,8 @@ HB_FUNC( HB_INETSETSNDBUFSIZE )
|
||||
|
||||
if( Socket == NULL )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
hb_retni( -1 );
|
||||
else
|
||||
{
|
||||
int value = hb_parni( 2 );
|
||||
@@ -835,6 +849,8 @@ HB_FUNC( HB_INETSETRCVBUFSIZE )
|
||||
|
||||
if( Socket == NULL )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
hb_retni( -1 );
|
||||
else
|
||||
{
|
||||
int value = hb_parni( 2 );
|
||||
@@ -866,6 +882,11 @@ static void s_inetRecvInternal( int iMode )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
return;
|
||||
}
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
{
|
||||
hb_retni( 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
pBuffer = hb_itemUnShare( pBuffer );
|
||||
buffer = hb_itemGetCPtr( pBuffer );
|
||||
@@ -975,6 +996,11 @@ static void s_inetRecvPattern( char *szPattern )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
return;
|
||||
}
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
{
|
||||
hb_retni( 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
if( pBufferSize )
|
||||
{
|
||||
@@ -1131,6 +1157,13 @@ HB_FUNC( HB_INETRECVENDBLOCK )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
return;
|
||||
}
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
{
|
||||
if( pResult )
|
||||
hb_itemPutNI( pResult, -1 );
|
||||
hb_retc( NULL );
|
||||
return;
|
||||
}
|
||||
|
||||
if( pProto )
|
||||
{
|
||||
@@ -1316,6 +1349,11 @@ HB_FUNC( HB_INETDATAREADY )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
return;
|
||||
}
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
{
|
||||
hb_retl( FALSE );
|
||||
return;
|
||||
}
|
||||
|
||||
HB_SOCKET_ZERO_ERROR( Socket );
|
||||
|
||||
@@ -1354,6 +1392,11 @@ static void s_inetSendInternal( int iMode )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
return;
|
||||
}
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
{
|
||||
hb_retni( 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
Buffer = hb_itemGetCPtr( pBuffer );
|
||||
iSend = ( int ) hb_itemGetCLen( pBuffer );
|
||||
@@ -1600,6 +1643,10 @@ HB_FUNC( HB_INETACCEPT )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
return;
|
||||
}
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Len = sizeof( struct sockaddr_in );
|
||||
|
||||
@@ -1678,6 +1725,11 @@ HB_FUNC( HB_INETCONNECT )
|
||||
|
||||
if( Socket != NULL )
|
||||
{
|
||||
if( Socket->com != ( HB_SOCKET_T ) -1 )
|
||||
{
|
||||
HB_INET_CLOSE( Socket->com );
|
||||
Socket->com = ( HB_SOCKET_T ) -1;
|
||||
}
|
||||
HB_SOCKET_ZERO_ERROR( Socket );
|
||||
}
|
||||
else
|
||||
@@ -1736,6 +1788,11 @@ HB_FUNC( HB_INETCONNECTIP )
|
||||
|
||||
if( Socket != NULL )
|
||||
{
|
||||
if( Socket->com != ( HB_SOCKET_T ) -1 )
|
||||
{
|
||||
HB_INET_CLOSE( Socket->com );
|
||||
Socket->com = ( HB_SOCKET_T ) -1;
|
||||
}
|
||||
HB_SOCKET_ZERO_ERROR( Socket );
|
||||
}
|
||||
else
|
||||
@@ -1917,6 +1974,12 @@ HB_FUNC( HB_INETDGRAMSEND )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
return;
|
||||
}
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
{
|
||||
Socket->count = 0;
|
||||
hb_retni( 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
Socket->remote.sin_family = AF_INET;
|
||||
Socket->remote.sin_port = htons( iPort );
|
||||
@@ -1975,6 +2038,12 @@ HB_FUNC( HB_INETDGRAMRECV )
|
||||
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
|
||||
return;
|
||||
}
|
||||
else if( !hb_inetIsOpen( Socket ) )
|
||||
{
|
||||
Socket->count = 0;
|
||||
hb_retni( -1 );
|
||||
return;
|
||||
}
|
||||
|
||||
pBuffer = hb_itemUnShare( pBuffer );
|
||||
Buffer = hb_itemGetCPtr( pBuffer );
|
||||
|
||||
Reference in New Issue
Block a user