From 0433f879a4477bf749df875fdb6cc7e29784378f Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Sun, 6 May 2007 14:16:19 +0000 Subject: [PATCH] 2007-05-06 16:15 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/source/vm/classes.c * changed __cls_IncData() to return index to newly allocated instance item and __cls_DecData() to return number of local (not inherited) instance items --- harbour/ChangeLog | 6 ++++++ harbour/source/vm/classes.c | 19 +++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index f3a9901413..b313a0affb 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,12 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-05-06 16:15 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/source/vm/classes.c + * changed __cls_IncData() to return index to newly allocated instance + item and __cls_DecData() to return number of local (not inherited) + instance items + 2007-05-06 11:42 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * harbour/source/rtl/hbrandom.c ! HB_RANDOMSEED() fixed to correctly handle passed parameter. diff --git a/harbour/source/vm/classes.c b/harbour/source/vm/classes.c index fe66975360..404a6a877c 100644 --- a/harbour/source/vm/classes.c +++ b/harbour/source/vm/classes.c @@ -3235,12 +3235,12 @@ HB_FUNC( __CLS_DECDATA ) { USHORT uiClass = ( USHORT ) hb_parni( 1 ); - if( uiClass && uiClass <= s_uiClasses && s_pClasses[ uiClass ].uiDatas ) + if( uiClass && uiClass <= s_uiClasses && + s_pClasses[ uiClass ].uiDatas > s_pClasses[ uiClass ].uiDataFirst ) { - if( s_pClasses[ uiClass ].fLocked ) - hb_retni( s_pClasses[ uiClass ].uiDatas ); - else - hb_retni( --s_pClasses[ uiClass ].uiDatas ); + if( !s_pClasses[ uiClass ].fLocked ) + s_pClasses[ uiClass ].uiDatas--; + hb_retni( s_pClasses[ uiClass ].uiDatas - s_pClasses[ uiClass ].uiDataFirst ); } else hb_retni( 0 ); @@ -3248,7 +3248,7 @@ HB_FUNC( __CLS_DECDATA ) /* * = __cls_IncData( ) - * Increase number of datas and return new value + * Increase number of datas and return offset to new value */ HB_FUNC( __CLS_INCDATA ) { @@ -3256,10 +3256,9 @@ HB_FUNC( __CLS_INCDATA ) if( uiClass && uiClass <= s_uiClasses ) { - if( s_pClasses[ uiClass ].fLocked ) - hb_retni( s_pClasses[ uiClass ].uiDatas ); - else - hb_retni( ++s_pClasses[ uiClass ].uiDatas ); + if( !s_pClasses[ uiClass ].fLocked ) + s_pClasses[ uiClass ].uiDatas++; + hb_retni( s_pClasses[ uiClass ].uiDatas - s_pClasses[ uiClass ].uiDataFirst ); } else hb_retni( 0 );