Explorar el Código

* throw an error if RTLEventCreate() fails on Unix

git-svn-id: trunk@28964 -
Jonas Maebe hace 10 años
padre
commit
35a313d98c
Se han modificado 1 ficheros con 13 adiciones y 2 borrados
  1. 13 2
      rtl/unix/cthreads.pp

+ 13 - 2
rtl/unix/cthreads.pp

@@ -874,8 +874,19 @@ var p:pintrtlevent;
 
 begin
   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;
   result:=PRTLEVENT(p);
 end;