components/ghostscript/patches/12-7076729.patch
changeset 512 a83040d1e4ec
child 7819 b1bca76ec901
equal deleted inserted replaced
511:f84d7a36b8c7 512:a83040d1e4ec
       
     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