2
0
Эх сурвалжийг харах

* throw an error if RTLEventCreate() fails on Unix

git-svn-id: trunk@28964 -
Jonas Maebe 10 жил өмнө
parent
commit
35a313d98c

+ 13 - 2
rtl/unix/cthreads.pp

@@ -874,8 +874,19 @@ var p:pintrtlevent;
 
 
 begin
 begin
   new(p);
   new(p);
-  pthread_cond_init(@p^.condvar, nil);
-  pthread_mutex_init(@p^.mutex, nil);
+  if not assigned(p) then
+    fpc_threaderror;
+  if pthread_cond_init(@p^.condvar, nil)<>0 then
+    begin
+      dispose(p);
+      fpc_threaderror;
+    end;
+  if pthread_mutex_init(@p^.mutex, nil)<>0 then
+    begin
+      pthread_cond_destroy(@p^.condvar);
+      dispose(p);
+      fpc_threaderror;
+    end;
   p^.isset:=false;
   p^.isset:=false;
   result:=PRTLEVENT(p);
   result:=PRTLEVENT(p);
 end;
 end;