ChangeLog 2000-06-28 10:50 UTC+0100
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
2000-06-29 10:50 UTC+0100 Ryszard Glab <rglab@imid.med.pl>
|
||||
|
||||
*source/vm/classes.c
|
||||
*fixed to stop handling of the garbage collector requests
|
||||
(hb_clsIsClassRef()) after all classes were released
|
||||
|
||||
*source/rtl/setkey.c
|
||||
*fixed to lock codeblocks stored internally to prevent deallocation
|
||||
by the garbage collector
|
||||
|
||||
2000-06-28-23:20 Luiz Rafael Culik <culik@sl.conex.net>
|
||||
*contrib/hbzlib/zipfile2.c
|
||||
-hb___MyMkdir() Functions. All Calls to this function replaced with hb_fsMkDir()
|
||||
|
||||
@@ -65,10 +65,13 @@ void hb_setkeyExit( void )
|
||||
{
|
||||
PHB_SETKEY sk_list_tmp;
|
||||
|
||||
hb_gcUnlockItem( s_sk_list->pAction );
|
||||
hb_itemRelease( s_sk_list->pAction );
|
||||
if( s_sk_list->pIsActive )
|
||||
{
|
||||
hb_gcUnlockItem( s_sk_list->pIsActive );
|
||||
hb_itemRelease( s_sk_list->pIsActive );
|
||||
|
||||
}
|
||||
sk_list_tmp = s_sk_list->next;
|
||||
hb_xfree( ( void * ) s_sk_list );
|
||||
s_sk_list = sk_list_tmp;
|
||||
@@ -106,6 +109,10 @@ static void sk_add( BOOL bReturn, SHORT iKeyCode, PHB_ITEM pAction, PHB_ITEM pIs
|
||||
sk_list_tmp->iKeyCode = iKeyCode;
|
||||
sk_list_tmp->pAction = hb_itemNew( pAction );
|
||||
sk_list_tmp->pIsActive = pIsActive ? hb_itemNew( pIsActive ) : NULL;
|
||||
/* lock codeblock to prevent deallocation by the GC */
|
||||
hb_gcLockItem( sk_list_tmp->pAction );
|
||||
if( sk_list_tmp->pIsActive )
|
||||
hb_gcLockItem( sk_list_tmp->pIsActive );
|
||||
|
||||
if( sk_list_end == NULL )
|
||||
s_sk_list = sk_list_tmp;
|
||||
@@ -122,16 +129,23 @@ static void sk_add( BOOL bReturn, SHORT iKeyCode, PHB_ITEM pAction, PHB_ITEM pIs
|
||||
|
||||
/* Free the previous values */
|
||||
|
||||
hb_gcUnlockItem( sk_list_tmp->pAction );
|
||||
hb_itemRelease( sk_list_tmp->pAction );
|
||||
if( sk_list_tmp->pIsActive )
|
||||
{
|
||||
hb_gcUnlockItem( sk_list_tmp->pIsActive );
|
||||
hb_itemRelease( sk_list_tmp->pIsActive );
|
||||
|
||||
}
|
||||
/* Set the new values or free the entry */
|
||||
|
||||
if( pAction )
|
||||
{
|
||||
sk_list_tmp->pAction = hb_itemNew( pAction );
|
||||
sk_list_tmp->pIsActive = pIsActive ? hb_itemNew( pIsActive ) : NULL;
|
||||
/* lock codeblock to prevent deallocation by the GC */
|
||||
hb_gcLockItem( sk_list_tmp->pAction );
|
||||
if( sk_list_tmp->pIsActive )
|
||||
hb_gcLockItem( sk_list_tmp->pIsActive );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -316,6 +316,8 @@ void hb_clsReleaseAll( void )
|
||||
|
||||
if( s_pClasses )
|
||||
hb_xfree( s_pClasses );
|
||||
s_uiClasses = 0;
|
||||
s_pClasses = NULL;
|
||||
}
|
||||
|
||||
/* Check if passed memory block pointer is referenced by some class
|
||||
|
||||
Reference in New Issue
Block a user