From: Terrance S. <ts...@us...> - 2007-02-22 20:42:03
|
Update of /cvsroot/xsb/XSB/emu In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv17060 Modified Files: tr_utils.c Log Message: Fixed memory deallocation problem introduced yesterday with the introduction of private structure managers for trie hash arrays. This problem only showed up for the MT engine in Linux. Index: tr_utils.c =================================================================== RCS file: /cvsroot/xsb/XSB/emu/tr_utils.c,v retrieving revision 1.135 retrieving revision 1.136 diff -u -r1.135 -r1.136 --- tr_utils.c 22 Feb 2007 00:16:05 -0000 1.135 +++ tr_utils.c 22 Feb 2007 20:41:53 -0000 1.136 @@ -363,8 +363,15 @@ static void free_trie_ht(CTXTdeclc BTHTptr ht) { - mem_dealloc(BTHT_BucketArray(ht),BTHT_NumBuckets(ht)*sizeof(void *), - TABLE_SPACE); +#ifdef MULTI_THREAD + if (BTHT_NumBuckets(ht) == TrieHT_INIT_SIZE + && threads_current_sm != SHARED_SM) { + SM_DeallocateStruct(*private_smTableBTHTArray,BTHT_BucketArray(ht)); + } + else +#endif + mem_dealloc(BTHT_BucketArray(ht),BTHT_NumBuckets(ht)*sizeof(void *), + TABLE_SPACE); #ifdef MULTI_THREAD if( threads_current_sm == SHARED_SM ) SM_Lock(*smBTHT); |