|
@@ -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;
|