Просмотр исходного кода

mutex bug fixes as reported by Kristen Smith.

(Logical change 1.139)


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@498 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 21 лет назад
Родитель
Сommit
f77927efc8
1 измененных файлов с 4 добавлено и 3 удалено
  1. 4 3
      lib/clm.c

+ 4 - 3
lib/clm.c

@@ -223,7 +223,7 @@ saClmDispatch (
 
 
 		error = saPollRetry (&ufds, 1, timeout);
 		error = saPollRetry (&ufds, 1, timeout);
 		if (error != SA_OK) {
 		if (error != SA_OK) {
-			goto error_nounlock;
+			goto error_put;
 		}
 		}
 
 
 		pthread_mutex_lock (&clmInstance->mutex);
 		pthread_mutex_lock (&clmInstance->mutex);
@@ -233,7 +233,6 @@ saClmDispatch (
 		 */
 		 */
 		if (clmInstance->finalize == 1) {
 		if (clmInstance->finalize == 1) {
 			error = SA_OK;
 			error = SA_OK;
-			pthread_mutex_unlock (&clmInstance->mutex);
 			goto error_unlock;
 			goto error_unlock;
 		}
 		}
 
 
@@ -337,7 +336,7 @@ saClmDispatch (
 
 
 		default:
 		default:
 			error = SA_ERR_LIBRARY;
 			error = SA_ERR_LIBRARY;
-			goto error_nounlock;
+			goto error_put;
 			break;
 			break;
 		}
 		}
 
 
@@ -356,6 +355,8 @@ saClmDispatch (
 	} while (cont);
 	} while (cont);
 
 
 error_unlock:
 error_unlock:
+	pthread_mutex_unlock (&clmInstance->mutex);
+error_put:
 	saHandleInstancePut (&clmHandleDatabase, clmHandle);
 	saHandleInstancePut (&clmHandleDatabase, clmHandle);
 error_nounlock:
 error_nounlock:
 	return (error);
 	return (error);