mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 14:00:21 +02:00
Fix lock handling bug in commit aac980de43
.
* libguile/weak-set.c (resize_set): When releasing a lock temporarily to do an allocation, re-lock it afterwards, instead of unlocking again. * libguile/weak-table.c (resize_table): Likewise.
This commit is contained in:
parent
730af462c3
commit
a722bcaa13
2 changed files with 2 additions and 2 deletions
|
@ -362,7 +362,7 @@ resize_set (scm_t_weak_set *set)
|
|||
run anything, so drop our lock to avoid deadlocks. */
|
||||
new_entries = scm_gc_malloc_pointerless (new_size * sizeof(scm_t_weak_entry),
|
||||
"weak set");
|
||||
scm_i_pthread_mutex_unlock (&set->lock);
|
||||
scm_i_pthread_mutex_lock (&set->lock);
|
||||
}
|
||||
while (!is_acceptable_size_index (set, new_size_index));
|
||||
|
||||
|
|
|
@ -484,7 +484,7 @@ resize_table (scm_t_weak_table *table)
|
|||
/* Allocating memory might cause finalizers to run, which could
|
||||
run anything, so drop our lock to avoid deadlocks. */
|
||||
new_entries = allocate_entries (new_size, table->kind);
|
||||
scm_i_pthread_mutex_unlock (&table->lock);
|
||||
scm_i_pthread_mutex_lock (&table->lock);
|
||||
}
|
||||
while (!is_acceptable_size_index (table, new_size_index));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue