2008-11-24 16:41 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/pp/ppcore.c
* harbour/source/rtl/run.c
* harbour/source/rtl/errorint.c
* harbour/source/rtl/trace.c
* harbour/contrib/xhb/hboutdbg.c
* pacified warnings and updated some possibly danger constructions
* harbour/source/vm/memvars.c
% improved the performance of __MVRESTORE()
; TOFIX: this code has Clipper incompatible extension which may cause
that incorrect values will be restored - numeric double values with
0 as default number of decimal places for str() formatting are
wrongly converted to integers loosing fractional part of number.
This commit is contained in:
@@ -8,6 +8,21 @@
|
||||
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2008-11-24 16:41 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/source/pp/ppcore.c
|
||||
* harbour/source/rtl/run.c
|
||||
* harbour/source/rtl/errorint.c
|
||||
* harbour/source/rtl/trace.c
|
||||
* harbour/contrib/xhb/hboutdbg.c
|
||||
* pacified warnings and updated some possibly danger constructions
|
||||
|
||||
* harbour/source/vm/memvars.c
|
||||
% improved the performance of __MVRESTORE()
|
||||
; TOFIX: this code has Clipper incompatible extension which may cause
|
||||
that incorrect values will be restored - numeric double values with
|
||||
0 as default number of decimal places for str() formatting are
|
||||
wrongly converted to integers loosing fractional part of number.
|
||||
|
||||
2008-11-24 12:34 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/include/hberrors.h
|
||||
* harbour/source/compiler/hbgenerr.c
|
||||
|
||||
@@ -204,8 +204,17 @@ void hb_OutDebug( const char * szMsg, ULONG ulMsgLen )
|
||||
|
||||
if( select( s_iDebugFd + 1, NULL, &wrds, NULL, &tv ) > 0 )
|
||||
{
|
||||
write( s_iDebugFd, szMsg, ulMsgLen );
|
||||
write( s_iDebugFd, "\n", 1 );
|
||||
if( ( ULONG ) write( s_iDebugFd, szMsg, ulMsgLen ) == ulMsgLen )
|
||||
{
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 100000;
|
||||
FD_ZERO(&wrds);
|
||||
FD_SET(s_iDebugFd, &wrds);
|
||||
if( select( s_iDebugFd + 1, NULL, &wrds, NULL, &tv ) > 0 )
|
||||
{
|
||||
if( write( s_iDebugFd, "\n", 1 ) != 1 ) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +100,7 @@
|
||||
#define HB_PP_ERR_NESTED_INCLUDES 31 /* C3009 */
|
||||
#define HB_PP_ERR_INVALID_DIRECTIVE 32 /* C3010 */
|
||||
#define HB_PP_ERR_CANNOT_OPEN_RULES 33 /* C3011 */
|
||||
#define HB_PP_ERR_WRITE_FILE 34 /* C3029 */
|
||||
|
||||
|
||||
/* warning messages */
|
||||
@@ -148,6 +149,7 @@ static const char * hb_pp_szErrors[] =
|
||||
"Too many nested #includes", /* C3009 */
|
||||
"Invalid name follows #", /* C3010 */
|
||||
"Can't open standard rule file '%s'" /* C3011 */
|
||||
"Write error to intermediate file '%s'" /* C3029 */
|
||||
};
|
||||
|
||||
|
||||
@@ -837,7 +839,8 @@ static void hb_pp_dumpEnd( PHB_PP_STATE pState )
|
||||
pBuffer = hb_membufPtr( pState->pDumpBuffer );
|
||||
ulLen = hb_membufLen( pState->pDumpBuffer );
|
||||
fputs( "#pragma BEGINDUMP\n", pState->file_out );
|
||||
( void ) fwrite( pBuffer, sizeof( char ), ulLen, pState->file_out );
|
||||
if( fwrite( pBuffer, sizeof( char ), ulLen, pState->file_out ) != ulLen )
|
||||
hb_pp_error( pState, 'F', HB_PP_ERR_WRITE_FILE, pState->szOutFileName );
|
||||
fputs( "#pragma ENDDUMP\n", pState->file_out );
|
||||
|
||||
while( ulLen-- )
|
||||
@@ -2516,8 +2519,12 @@ static void hb_pp_pragmaNew( PHB_PP_STATE pState, PHB_PP_TOKEN pToken )
|
||||
hb_membufAddCh( pState->pBuffer, '\n' );
|
||||
if( pState->fWriteTrace )
|
||||
{
|
||||
( void ) fwrite( hb_membufPtr( pState->pBuffer ), sizeof( char ),
|
||||
hb_membufLen( pState->pBuffer ), pState->file_trace );
|
||||
if( fwrite( hb_membufPtr( pState->pBuffer ), sizeof( char ),
|
||||
hb_membufLen( pState->pBuffer ), pState->file_out ) !=
|
||||
hb_membufLen( pState->pBuffer ) )
|
||||
{
|
||||
hb_pp_error( pState, 'F', HB_PP_ERR_WRITE_FILE, pState->szTraceFileName );
|
||||
}
|
||||
}
|
||||
if( pState->fTracePragmas )
|
||||
{
|
||||
@@ -5124,8 +5131,12 @@ PHB_PP_TOKEN hb_pp_tokenGet( PHB_PP_STATE pState )
|
||||
pState->usLastType );
|
||||
#endif
|
||||
pState->usLastType = HB_PP_TOKEN_TYPE( pState->pTokenOut->type );
|
||||
( void ) fwrite( hb_membufPtr( pState->pBuffer ), sizeof( char ),
|
||||
hb_membufLen( pState->pBuffer ), pState->file_out );
|
||||
if( fwrite( hb_membufPtr( pState->pBuffer ), sizeof( char ),
|
||||
hb_membufLen( pState->pBuffer ), pState->file_out ) !=
|
||||
hb_membufLen( pState->pBuffer ) )
|
||||
{
|
||||
hb_pp_error( pState, 'F', HB_PP_ERR_WRITE_FILE, pState->szOutFileName );
|
||||
}
|
||||
}
|
||||
|
||||
return pState->pTokenOut;
|
||||
@@ -5873,8 +5884,12 @@ void hb_pp_tokenToString( PHB_PP_STATE pState, PHB_PP_TOKEN pToken )
|
||||
{
|
||||
if( !fError )
|
||||
hb_membufAddCh( pState->pBuffer, ']' );
|
||||
( void ) fwrite( hb_membufPtr( pState->pBuffer ), sizeof( char ),
|
||||
hb_membufLen( pState->pBuffer ), pState->file_out );
|
||||
if( fwrite( hb_membufPtr( pState->pBuffer ), sizeof( char ),
|
||||
hb_membufLen( pState->pBuffer ), pState->file_out ) !=
|
||||
hb_membufLen( pState->pBuffer ) )
|
||||
{
|
||||
hb_pp_error( pState, 'F', HB_PP_ERR_WRITE_FILE, pState->szOutFileName );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ void hb_errInternalRaw( ULONG ulIntCode, const char * szText, const char * szPar
|
||||
|
||||
hb_conOutErr( buffer, 0 );
|
||||
if( hLog )
|
||||
( void ) fwrite( buffer, sizeof( buffer[ 0 ] ), strlen( buffer ), hLog );
|
||||
fprintf( hLog, "%s", buffer );
|
||||
|
||||
if( szText )
|
||||
hb_snprintf( buffer, sizeof( buffer ), szText, szPar1, szPar2 );
|
||||
@@ -130,7 +130,7 @@ void hb_errInternalRaw( ULONG ulIntCode, const char * szText, const char * szPar
|
||||
|
||||
hb_conOutErr( msg, 0 );
|
||||
if( hLog )
|
||||
( void ) fwrite( msg, sizeof( msg[ 0 ] ), strlen( msg ), hLog );
|
||||
fprintf( hLog, "%s", msg );
|
||||
}
|
||||
|
||||
if( hLog )
|
||||
|
||||
@@ -61,7 +61,7 @@ HB_FUNC( __RUN )
|
||||
{
|
||||
if( ISCHAR( 1 ) && hb_gtSuspend() == 0 )
|
||||
{
|
||||
( void ) system( hb_parc( 1 ) );
|
||||
if( system( hb_parc( 1 ) ) != 0 ) {}
|
||||
|
||||
if( hb_gtResume() != 0 )
|
||||
{
|
||||
|
||||
@@ -68,6 +68,6 @@ HB_FUNC( HB_TRACESTRING )
|
||||
char * szMessage = hb_parc( 1 );
|
||||
if( szMessage )
|
||||
{
|
||||
HB_TRACE(HB_TR_ALWAYS, (szMessage) );
|
||||
HB_TRACE(HB_TR_ALWAYS, ("%s", szMessage) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1509,6 +1509,8 @@ HB_FUNC( __MVRESTORE )
|
||||
BOOL bIncludeMask;
|
||||
BYTE buffer[ HB_MEM_REC_LEN ];
|
||||
const char * pszMask;
|
||||
char *szName;
|
||||
PHB_ITEM pItem = NULL;
|
||||
|
||||
#ifdef HB_C52_STRICT
|
||||
pszMask = "*";
|
||||
@@ -1520,11 +1522,13 @@ HB_FUNC( __MVRESTORE )
|
||||
|
||||
while( hb_fsRead( fhnd, buffer, HB_MEM_REC_LEN ) == HB_MEM_REC_LEN )
|
||||
{
|
||||
char *szName = hb_strdup( ( char * ) buffer );
|
||||
USHORT uiType = ( USHORT ) ( buffer[ 11 ] - 128 );
|
||||
USHORT uiWidth = ( USHORT ) buffer[ 16 ];
|
||||
USHORT uiDec = ( USHORT ) buffer[ 17 ];
|
||||
PHB_ITEM pItem = NULL;
|
||||
|
||||
/* protect against corrupted files */
|
||||
buffer[ 10 ] = '\0';
|
||||
szName = ( char * ) buffer;
|
||||
|
||||
switch( uiType )
|
||||
{
|
||||
@@ -1536,9 +1540,12 @@ HB_FUNC( __MVRESTORE )
|
||||
pbyString = ( BYTE * ) hb_xgrab( uiWidth );
|
||||
|
||||
if( hb_fsRead( fhnd, pbyString, uiWidth ) == uiWidth )
|
||||
pItem = hb_itemPutCL( NULL, ( char * ) pbyString, uiWidth - 1 );
|
||||
|
||||
hb_xfree( pbyString );
|
||||
pItem = hb_itemPutCLPtr( pItem, ( char * ) pbyString, uiWidth - 1 );
|
||||
else
|
||||
{
|
||||
hb_xfree( pbyString );
|
||||
szName = NULL;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1548,7 +1555,9 @@ HB_FUNC( __MVRESTORE )
|
||||
BYTE pbyNumber[ HB_MEM_NUM_LEN ];
|
||||
|
||||
if( hb_fsRead( fhnd, pbyNumber, HB_MEM_NUM_LEN ) == HB_MEM_NUM_LEN )
|
||||
pItem = hb_itemPutNLen( NULL, HB_GET_LE_DOUBLE( pbyNumber ), uiWidth - ( uiDec ? ( uiDec + 1 ) : 0 ), uiDec );
|
||||
pItem = hb_itemPutNLen( pItem, HB_GET_LE_DOUBLE( pbyNumber ), uiWidth - ( uiDec ? ( uiDec + 1 ) : 0 ), uiDec );
|
||||
else
|
||||
szName = NULL;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1558,7 +1567,9 @@ HB_FUNC( __MVRESTORE )
|
||||
BYTE pbyNumber[ HB_MEM_NUM_LEN ];
|
||||
|
||||
if( hb_fsRead( fhnd, pbyNumber, HB_MEM_NUM_LEN ) == HB_MEM_NUM_LEN )
|
||||
pItem = hb_itemPutDL( NULL, ( long ) HB_GET_LE_DOUBLE( pbyNumber ) );
|
||||
pItem = hb_itemPutDL( pItem, ( long ) HB_GET_LE_DOUBLE( pbyNumber ) );
|
||||
else
|
||||
szName = NULL;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1568,13 +1579,18 @@ HB_FUNC( __MVRESTORE )
|
||||
BYTE pbyLogical[ 1 ];
|
||||
|
||||
if( hb_fsRead( fhnd, pbyLogical, 1 ) == 1 )
|
||||
pItem = hb_itemPutL( NULL, pbyLogical[ 0 ] != 0 );
|
||||
pItem = hb_itemPutL( pItem, pbyLogical[ 0 ] != 0 );
|
||||
else
|
||||
szName = NULL;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
szName = NULL;
|
||||
}
|
||||
|
||||
if( pItem )
|
||||
if( szName )
|
||||
{
|
||||
BOOL bMatch = hb_strMatchCaseWildExact( szName, pszMask );
|
||||
|
||||
@@ -1590,18 +1606,13 @@ HB_FUNC( __MVRESTORE )
|
||||
else
|
||||
/* attempt to assign a value to undeclared variable create the PRIVATE one */
|
||||
hb_memvarCreateFromDynSymbol( hb_dynsymGet( szName ), VS_PRIVATE, pItem );
|
||||
|
||||
hb_itemReturn( pItem );
|
||||
}
|
||||
|
||||
hb_itemRelease( pItem );
|
||||
}
|
||||
|
||||
hb_xfree( szName );
|
||||
}
|
||||
|
||||
hb_fsClose( fhnd );
|
||||
hb_memvarUpdatePrivatesBase();
|
||||
hb_itemReturnRelease( pItem );
|
||||
}
|
||||
else
|
||||
hb_retl( FALSE );
|
||||
|
||||
Reference in New Issue
Block a user