Changeset 2125


Ignore:
Timestamp:
Jul 1, 2005, 4:05:58 AM (20 years ago)
Author:
bird
Message:

fork trouble, the three heap handles might be duplicates of one another.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/src/lib/malloc/initr.c

    • Property cvs2svn:cvs-rev changed from 1.7 to 1.8
    r2124 r2125  
    135135            {
    136136                LIBCLOG_MSG("Locking the heaps.\n");
    137                 if (_um_tiled_heap)
    138                     _um_heap_lock(_um_tiled_heap);
    139137                if (_um_high_heap)
    140138                    _um_heap_lock(_um_high_heap);
    141                 if (_um_low_heap)
     139                if (_um_low_heap && _um_low_heap != _um_high_heap)
    142140                    _um_heap_lock(_um_low_heap);
     141                if (_um_tiled_heap && _um_tiled_heap != _um_low_heap && _um_tiled_heap != _um_high_heap)
     142                    _um_heap_lock(_um_tiled_heap);
    143143            }
    144144            break;
     
    168168        if (enmCtx == __LIBC_FORK_CTX_PARENT)
    169169        {
    170             if (_um_tiled_heap)
    171                 _um_heap_unlock(_um_tiled_heap);
    172170            if (_um_high_heap)
    173171                _um_heap_unlock(_um_high_heap);
    174             if (_um_low_heap)
     172            if (_um_low_heap && _um_low_heap != _um_high_heap)
    175173                _um_heap_unlock(_um_low_heap);
     174            if (_um_tiled_heap && _um_tiled_heap != _um_low_heap && _um_tiled_heap != _um_high_heap)
     175                _um_heap_unlock(_um_tiled_heap);
    176176        }
    177177        else
    178178        {
    179             if (_um_tiled_heap)
    180                 _fmutex_release_fork(&_um_tiled_heap->fsem);
    181179            if (_um_high_heap)
    182180                _fmutex_release_fork(&_um_high_heap->fsem);
    183             if (_um_low_heap)
     181            if (_um_low_heap && _um_low_heap != _um_high_heap)
    184182                _fmutex_release_fork(&_um_low_heap->fsem);
     183            if (_um_tiled_heap && _um_tiled_heap != _um_low_heap && _um_tiled_heap != _um_high_heap)
     184                _fmutex_release_fork(&_um_tiled_heap->fsem);
    185185        }
    186186        gfForkCleanupDone = 1;
Note: See TracChangeset for help on using the changeset viewer.