From 14a11b01502edb113fb7472d0cfe5be033a71642 Mon Sep 17 00:00:00 2001 From: "David G. Holm" Date: Fri, 2 Aug 2002 16:07:59 +0000 Subject: [PATCH] See ChangeLog entry 2002-08-02 12:05 UTC-0400 David G. Holm --- harbour/ChangeLog | 4 ++++ harbour/source/rtl/set.c | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 8ad6d7de62..22021b9556 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,10 @@ 2002-12-01 23:12 UTC+0100 Foo Bar */ +2002-08-02 12:05 UTC-0400 David G. Holm + * source/rtl/set.c + ! When encountering SET ALTERNATE TO, close the file. + ! When encountering SET(_SET_EXTRAFILE,NULL), close the file. 2002-07-25 13:42 UTC+0100 Ignacio Ortiz * source/pp/ppcore.c diff --git a/harbour/source/rtl/set.c b/harbour/source/rtl/set.c index 5df8de1c7f..0eb143fe5d 100644 --- a/harbour/source/rtl/set.c +++ b/harbour/source/rtl/set.c @@ -411,10 +411,24 @@ HB_FUNC( SET ) case HB_SET_ALTFILE : if( hb_set.HB_SET_ALTFILE ) hb_retc( hb_set.HB_SET_ALTFILE ); else hb_retc( NULL ); - if( args > 1 && ! HB_IS_NIL( pArg2 ) ) hb_set.HB_SET_ALTFILE = set_string( pArg2, hb_set.HB_SET_ALTFILE ); + if( args > 1 ) + { + if( HB_IS_NIL( pArg2 ) ) + { + if( hb_set.HB_SET_ALTFILE ) + { + hb_xfree( hb_set.HB_SET_ALTFILE ); + hb_set.HB_SET_ALTFILE = NULL; + } + } + else + { + hb_set.HB_SET_ALTFILE = set_string( pArg2, hb_set.HB_SET_ALTFILE ); + } + } if( args > 2 ) bFlag = set_logical( pArg3 ); else bFlag = FALSE; - if( args > 1 && ! HB_IS_NIL( pArg2 ) ) + if( args > 1 ) { close_text( hb_set.hb_set_althan ); if( hb_set.HB_SET_ALTFILE && strlen( hb_set.HB_SET_ALTFILE ) > 0 ) @@ -584,7 +598,21 @@ HB_FUNC( SET ) case HB_SET_EXTRAFILE : if( hb_set.HB_SET_EXTRAFILE ) hb_retc( hb_set.HB_SET_EXTRAFILE ); else hb_retc( NULL ); - if( args > 1 && ! HB_IS_NIL( pArg2 ) ) hb_set.HB_SET_EXTRAFILE = set_string( pArg2, hb_set.HB_SET_EXTRAFILE ); + if( args > 1 ) + { + if( HB_IS_NIL( pArg2 ) ) + { + if( hb_set.HB_SET_EXTRAFILE ) + { + hb_xfree( hb_set.HB_SET_EXTRAFILE ); + hb_set.HB_SET_EXTRAFILE = NULL; + } + } + else + { + hb_set.HB_SET_EXTRAFILE = set_string( pArg2, hb_set.HB_SET_EXTRAFILE ); + } + } if( args > 2 ) bFlag = set_logical( pArg3 ); else bFlag = FALSE; if( args > 1 && ! HB_IS_NIL( pArg2 ) )