Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
fix threaded delta search locking
author
Nicolas Pitre
<nico@cam.org>
Mon, 10 Sep 2007 12:40:44 +0000
(08:40 -0400)
committer
Junio C Hamano
<gitster@pobox.com>
Mon, 10 Sep 2007 17:49:11 +0000
(10:49 -0700)
Found by Jeff King.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-pack-objects.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
367f4a4
)
diff --git
a/builtin-pack-objects.c
b/builtin-pack-objects.c
index 42698d29486390f4aef727ef5771d87a95dbbfcc..af12e454e183d69eb34c369e2c789a7c0a921b80 100644
(file)
--- a/
builtin-pack-objects.c
+++ b/
builtin-pack-objects.c
@@
-1597,6
+1597,7
@@
static void *threaded_find_deltas(void *arg)
data_requester = me;
pthread_mutex_unlock(&data_provider);
pthread_mutex_lock(&data_ready);
data_requester = me;
pthread_mutex_unlock(&data_provider);
pthread_mutex_lock(&data_ready);
+ pthread_mutex_unlock(&data_request);
if (!me->list_size)
return NULL;
if (!me->list_size)
return NULL;
@@
-1609,7
+1610,7
@@
static void *threaded_find_deltas(void *arg)
static void ll_find_deltas(struct object_entry **list, unsigned list_size,
int window, int depth, unsigned *processed)
{
static void ll_find_deltas(struct object_entry **list, unsigned list_size,
int window, int depth, unsigned *processed)
{
- struct thread_params p[delta_search_threads];
+ struct thread_params
*target,
p[delta_search_threads];
int i, ret;
unsigned chunk_size;
int i, ret;
unsigned chunk_size;
@@
-1645,17
+1646,17
@@
static void ll_find_deltas(struct object_entry **list, unsigned list_size,
sublist_size++;
pthread_mutex_lock(&data_provider);
sublist_size++;
pthread_mutex_lock(&data_provider);
- data_requester->list = list;
- data_requester->list_size = sublist_size;
+ target = data_requester;
+ target->list = list;
+ target->list_size = sublist_size;
pthread_mutex_unlock(&data_ready);
list += sublist_size;
list_size -= sublist_size;
if (!sublist_size) {
pthread_mutex_unlock(&data_ready);
list += sublist_size;
list_size -= sublist_size;
if (!sublist_size) {
- pthread_join(
data_requester
->thread, NULL);
+ pthread_join(
target
->thread, NULL);
i--;
}
i--;
}
- pthread_mutex_unlock(&data_request);
} while (i);
}
} while (i);
}