From 1f7ba8f009989abe243f2c57aa761084aa83ced8 Mon Sep 17 00:00:00 2001 From: "David G. Holm" Date: Wed, 18 Dec 2002 19:05:30 +0000 Subject: [PATCH] See ChangeLog entry 2002-12-18 14:00 UTC-0500 David G. Holm --- harbour/ChangeLog | 4 ++++ harbour/source/rtl/set.c | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index aaee656982..e496d44947 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,10 @@ 2002-12-01 23:12 UTC+0100 Foo Bar */ +2002-12-18 14:00 UTC-0500 David G. Holm + * source/rtl/set.c + ! In the set_string function, when then item parameter is NIL use a + zero-length string (bug fix for SET PATH TO and SET DEFAULT TO). 2002-12-17 10:50 UTC-0800 Brian Hays * contrib/rdd_ads/ads.ch diff --git a/harbour/source/rtl/set.c b/harbour/source/rtl/set.c index 0cbda74779..447ecccb5c 100644 --- a/harbour/source/rtl/set.c +++ b/harbour/source/rtl/set.c @@ -158,7 +158,8 @@ static int set_number( PHB_ITEM pItem, int iOldValue ) static char * set_string( PHB_ITEM pItem, char * szOldString ) { - char * szString; + char * szString = NULL; + ULONG ulLen = 0; HB_TRACE(HB_TR_DEBUG, ("set_string(%p, %s)", pItem, szOldString)); @@ -175,8 +176,17 @@ static char * set_string( PHB_ITEM pItem, char * szOldString ) memcpy( szString, hb_itemGetCPtr( pItem ), ulLen ); szString[ ulLen ] = '\0'; } + else if( HB_IS_NIL( pItem ) ) + { + if( szOldString ) szString = ( char * ) hb_xrealloc( szOldString, 1 ); + else szString = ( char * ) hb_xgrab( 1 ); + + szString[ 0 ] = '\0'; + } else + { szString = szOldString; + } return szString; }