diff --git a/src/xpdev/link_list.c b/src/xpdev/link_list.c
index fbbcd552f782f2f19c5354a95bf1a3a8e8a9b5b7..4c88fd396d89f76ffa7ffdc902869c9ff103ae27 100644
--- a/src/xpdev/link_list.c
+++ b/src/xpdev/link_list.c
@@ -158,7 +158,7 @@ void* listGetPrivateData(link_list_t* list)
 
 BOOL listSemPost(const link_list_t* list)
 {
-	if(list==NULL)
+	if(list==NULL || list->sem==NULL)
 		return(FALSE);
 
 	return(sem_post(&list->sem)==0);
@@ -166,7 +166,7 @@ BOOL listSemPost(const link_list_t* list)
 
 BOOL listSemWait(const link_list_t* list)
 {
-	if(list==NULL)
+	if(list==NULL || list->sem==NULL)
 		return(FALSE);
 
 	return(sem_wait(&list->sem)==0);
@@ -174,7 +174,7 @@ BOOL listSemWait(const link_list_t* list)
 
 BOOL listSemTryWait(const link_list_t* list)
 {
-	if(list==NULL)
+	if(list==NULL || list->sem==NULL)
 		return(FALSE);
 
 	return(sem_trywait(&list->sem)==0);
@@ -182,7 +182,7 @@ BOOL listSemTryWait(const link_list_t* list)
 
 BOOL listSemTryWaitBlock(const link_list_t* list, unsigned long timeout)
 {
-	if(list==NULL)
+	if(list==NULL || list->sem==NULL)
 		return(FALSE);
 
 	return(sem_trywait_block(&list->sem,timeout));