mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-06-30 11:16:03 +03:00
Do proper cleanup for tsd_state_reincarnated.
Also enable arena_bind under non-nominal state, as the cleanup will be handled correctly now.
This commit is contained in:
parent
51d3682950
commit
d3cda3423c
4 changed files with 50 additions and 18 deletions
15
src/tsd.c
15
src/tsd.c
|
|
@ -86,6 +86,12 @@ tsd_cleanup(void *arg) {
|
|||
/* Do nothing. */
|
||||
break;
|
||||
case tsd_state_nominal:
|
||||
case tsd_state_reincarnated:
|
||||
/*
|
||||
* Reincarnated means another destructor deallocated memory
|
||||
* after this destructor was called. Reset state to
|
||||
* tsd_state_purgatory and request another callback.
|
||||
*/
|
||||
#define MALLOC_TSD_cleanup_yes(n, t) \
|
||||
n##_cleanup(tsd);
|
||||
#define MALLOC_TSD_cleanup_no(n, t)
|
||||
|
|
@ -106,15 +112,6 @@ MALLOC_TSD
|
|||
* nothing, and do not request another callback.
|
||||
*/
|
||||
break;
|
||||
case tsd_state_reincarnated:
|
||||
/*
|
||||
* Another destructor deallocated memory after this destructor
|
||||
* was called. Reset state to tsd_state_purgatory and request
|
||||
* another callback.
|
||||
*/
|
||||
tsd->state = tsd_state_purgatory;
|
||||
tsd_set(tsd);
|
||||
break;
|
||||
default:
|
||||
not_reached();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue