From f450a94369a0e2830fa01d4cd69afe4c34c33835 Mon Sep 17 00:00:00 2001 From: Eddie Runia Date: Wed, 2 Jun 1999 11:36:21 +0000 Subject: [PATCH] see changelog --- harbour/ChangeLog | 4 ++++ harbour/source/rtl/arrays.c | 33 +++++++++++++++++++-------------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index b05bc4e056..f0d258b249 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,7 @@ +19990602-12:30 CET Eddie Runia + * source/rtl/arrays.c + memory leakage in arrayClone plugged + 19990602-09:30 Alexander Kresin Updated: * source/hbpp/hbpp.c - main preprocessor file diff --git a/harbour/source/rtl/arrays.c b/harbour/source/rtl/arrays.c index 25f0100400..6bfbc85ce9 100644 --- a/harbour/source/rtl/arrays.c +++ b/harbour/source/rtl/arrays.c @@ -526,10 +526,10 @@ void hb_arrayCopy( PITEM pSrcArray, PITEM pDstArray, ULONG ulStart, PITEM hb_arrayClone( PITEM pSrcArray ) { - PITEM pDstArray = hb_itemNew( 0 ); + PITEM pDstArray = hb_itemNew( 0 ); - if ( IS_ARRAY( pSrcArray ) ) - { + if ( IS_ARRAY( pSrcArray ) ) + { PBASEARRAY pSrcBaseArray, pDstBaseArray; ULONG ulCount, ulSrcLen = hb_arrayLen( pSrcArray ); @@ -540,24 +540,29 @@ PITEM hb_arrayClone( PITEM pSrcArray ) pDstBaseArray->wClass = pSrcBaseArray->wClass; for ( ulCount = 0; ulCount < ulSrcLen; ulCount ++ ) - { - PITEM pSrcItem = pSrcBaseArray->pItems + ulCount; + { + PITEM pSrcItem = pSrcBaseArray->pItems + ulCount; - if ( pSrcItem->wType == IT_ARRAY ) - hb_itemArrayPut( pDstArray, ulCount + 1, hb_arrayClone( pSrcItem ) ); - else + if ( pSrcItem->wType == IT_ARRAY ) + { + PITEM pClone = hb_arrayClone( pSrcItem ); + + hb_itemArrayPut( pDstArray, ulCount + 1, pClone ); + hb_itemRelease( pClone ); + } + else hb_itemArrayPut( pDstArray, ulCount + 1, pSrcItem ); - } + } return pDstArray; - } - else - { + } + else + { PITEM pError = _errNew(); _errPutDescription( pError, szArgumentError ); _errLaunch( pError ); _errRelease( pError ); - } - return pDstArray; + } + return pDstArray; } /*