|
1 --- ghostscript-9.00/base/gp_psync.c Wed Jul 28 14:52:49 2010 |
|
2 +++ ghostscript-9.00/base/gp_psync.c Fri Sep 9 12:12:13 2011 |
|
3 @@ -62,13 +62,18 @@ |
|
4 { |
|
5 pt_semaphore_t * const sem = (pt_semaphore_t *)sema; |
|
6 int scode; |
|
7 + pthread_mutex_t tmp_mutex; |
|
8 + pthread_cond_t tmp_cond; |
|
9 |
|
10 if (!sema) |
|
11 return -1; /* semaphores are not movable */ |
|
12 sem->count = 0; |
|
13 - scode = pthread_mutex_init(&sem->mutex, NULL); |
|
14 - if (scode == 0) |
|
15 - scode = pthread_cond_init(&sem->cond, NULL); |
|
16 + scode = pthread_mutex_init(&tmp_mutex, NULL); |
|
17 + memcpy(&sem->mutex, &tmp_mutex, sizeof(pthread_mutex_t)); |
|
18 + if (scode == 0) { |
|
19 + scode = pthread_cond_init(&tmp_cond, NULL); |
|
20 + memcpy(&sem->cond, &tmp_cond, sizeof(pthread_cond_t)); |
|
21 + } |
|
22 return SEM_ERROR_CODE(scode); |
|
23 } |
|
24 |
|
25 @@ -147,6 +152,7 @@ |
|
26 gp_monitor_open(gp_monitor * mona) |
|
27 { |
|
28 pthread_mutex_t *mon; |
|
29 + pthread_mutex_t tmp_mutex; |
|
30 int scode; |
|
31 |
|
32 if (!mona) |
|
33 @@ -153,7 +159,8 @@ |
|
34 return -1; /* monitors are not movable */ |
|
35 mon = &((gp_pthread_recursive_t *)mona)->mutex; |
|
36 ((gp_pthread_recursive_t *)mona)->self_id = 0; /* Not valid unless mutex is locked */ |
|
37 - scode = pthread_mutex_init(mon, NULL); |
|
38 + scode = pthread_mutex_init(&tmp_mutex, NULL); |
|
39 + memcpy(mon, &tmp_mutex, sizeof(pthread_mutex_t)); |
|
40 return SEM_ERROR_CODE(scode); |
|
41 } |
|
42 |