diff options
| author | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-03-19 22:20:39 +0000 |
|---|---|---|
| committer | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-03-19 22:20:39 +0000 |
| commit | e59199c7c0c5f14c74084371c9ff4af4958d395d (patch) | |
| tree | 8614a9e7786fd04328657574b9936ef47ff0d6c8 /packages/fcl-async | |
| parent | 386e29159c62a2a7f3c1ae94cf11cafe5fe1fcea (diff) | |
| download | fpc-e59199c7c0c5f14c74084371c9ff4af4958d395d.tar.gz | |
* and yet more ESysEINTR handling
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@12927 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-async')
| -rw-r--r-- | packages/fcl-async/src/unix/libasync.pp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/packages/fcl-async/src/unix/libasync.pp b/packages/fcl-async/src/unix/libasync.pp index d885ddaa45..cd65e0f8b4 100644 --- a/packages/fcl-async/src/unix/libasync.pp +++ b/packages/fcl-async/src/unix/libasync.pp @@ -86,14 +86,20 @@ var CurIOCallback: PIOCallbackData; begin if Handle^.Data.HighestHandle < 0 then - // No I/O checks to do, so just wait... - AsyncResult := fpselect(0, nil, nil, nil, TimeOut) + begin + // No I/O checks to do, so just wait... + repeat + AsyncResult := fpselect(0, nil, nil, nil, TimeOut) + until (AsyncResult<>-1) or (fpgeterrno<>ESysEINTR); + end else begin CurReadFDSet := PFDSet(Handle^.Data.FDData)[0]; CurWriteFDSet := PFDSet(Handle^.Data.FDData)[1]; - AsyncResult := fpselect(Handle^.Data.HighestHandle + 1, - @CurReadFDSet, @CurWriteFDSet, nil, TimeOut); + repeat + AsyncResult := fpselect(Handle^.Data.HighestHandle + 1, + @CurReadFDSet, @CurWriteFDSet, nil, TimeOut); + until (AsyncResult<>-1) or (fpgeterrno<>ESysEINTR); if AsyncResult > 0 then begin |
