From 0f765fb8fb45b675324fb57a0b32cc06f5a5c4f7 Mon Sep 17 00:00:00 2001 From: "Alexander S.Kresin" Date: Fri, 20 Jul 2001 09:35:01 +0000 Subject: [PATCH] 2001-07-20 13:35 GMT+3 Alexander Kresin --- harbour/ChangeLog | 4 ++++ harbour/source/rtl/memofile.c | 45 +++++++++++++++++++---------------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 6c607b6384..ee49dfc696 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,7 @@ +2001-07-20 13:35 GMT+3 Alexander Kresin + * source/rtl/memofile.c + ! A bug fixed, which appeared while reading an empty file + 2001-07-19 20:30 UTC-0800 Ron Pinkas * include/hbapi.h + Added #define HB_MAX_MACRO_ARGS 16 diff --git a/harbour/source/rtl/memofile.c b/harbour/source/rtl/memofile.c index c58ebb04cc..c7b0b1aad6 100644 --- a/harbour/source/rtl/memofile.c +++ b/harbour/source/rtl/memofile.c @@ -68,30 +68,35 @@ HB_FUNC( MEMOREAD ) if( fhnd != FS_ERROR ) { - ULONG ulSize = hb_fsSeek( fhnd, -( ( LONG ) sizeof( BYTE ) ), FS_END ) + sizeof( BYTE ); - BYTE * pbyBuffer; - - /* Don't read the file terminating EOF character */ - - #if ! defined(OS_UNIX_COMPATIBLE) + ULONG ulSize = hb_fsSeek( fhnd, 0, FS_END ); + if( ulSize != 0 ) { - BYTE byEOF = HB_CHAR_NUL; + BYTE * pbyBuffer; - hb_fsRead( fhnd, &byEOF, sizeof( BYTE ) ); + /* Don't read the file terminating EOF character */ - if( byEOF == HB_CHAR_EOF ) - ulSize--; + #if ! defined(OS_UNIX_COMPATIBLE) + { + BYTE byEOF = HB_CHAR_NUL; + + hb_fsRead( fhnd, &byEOF, sizeof( BYTE ) ); + + if( byEOF == HB_CHAR_EOF ) + ulSize--; + } + #endif + + pbyBuffer = ( BYTE * ) hb_xgrab( ulSize + sizeof( char ) ); + + hb_fsSeek( fhnd, 0, FS_SET ); + hb_fsReadLarge( fhnd, pbyBuffer, ulSize ); + + hb_fsClose( fhnd ); + + hb_itemPutCPtr( hb_itemReturnPtr(), ( char * ) pbyBuffer, ulSize ); } - #endif - - pbyBuffer = ( BYTE * ) hb_xgrab( ulSize + sizeof( char ) ); - - hb_fsSeek( fhnd, 0, FS_SET ); - hb_fsReadLarge( fhnd, pbyBuffer, ulSize ); - - hb_fsClose( fhnd ); - - hb_itemPutCPtr( hb_itemReturnPtr(), ( char * ) pbyBuffer, ulSize ); + else + hb_retc( "" ); } else hb_retc( "" );