* fhandler_serial.cc (fhandler_serial::raw_read): Handle non-blocking
case more thoroughly.
This commit is contained in:
		| @@ -1,3 +1,8 @@ | ||||
| 2011-07-13  Corinna Vinschen  <corinna@vinschen.de> | ||||
|  | ||||
| 	* fhandler_serial.cc (fhandler_serial::raw_read): Handle non-blocking | ||||
| 	case more thoroughly. | ||||
|  | ||||
| 2011-07-13  Christopher Faylor  <me.cygwin2011@cgf.cx> | ||||
|  | ||||
| 	* setup_handler (setup_handler): Change break to goto out, missed in | ||||
|   | ||||
| @@ -81,7 +81,17 @@ fhandler_serial::raw_read (void *ptr, size_t& ulen) | ||||
| 	    } | ||||
| 	  else if (GetLastError () != ERROR_IO_PENDING) | ||||
| 	    goto err; | ||||
| 	  else if (!is_nonblocking ()) | ||||
| 	  else if (is_nonblocking ()) | ||||
| 	    { | ||||
| 	      PurgeComm (get_handle (), PURGE_RXABORT); | ||||
| 	      if (tot == 0) | ||||
| 		{ | ||||
| 		  tot = -1; | ||||
| 		  set_errno (EAGAIN); | ||||
| 		} | ||||
| 	      goto out; | ||||
| 	    } | ||||
| 	  else | ||||
| 	    { | ||||
| 	      HANDLE w4[3] = { io_status.hEvent, signal_arrived, | ||||
| 			       pthread::get_cancel_event () }; | ||||
| @@ -124,6 +134,16 @@ restart: | ||||
| 	/* Got something */; | ||||
|       else if (GetLastError () != ERROR_IO_PENDING) | ||||
| 	goto err; | ||||
|       else if (is_nonblocking ()) | ||||
| 	{ | ||||
| 	  PurgeComm (get_handle (), PURGE_RXABORT); | ||||
| 	  if (tot == 0) | ||||
| 	    { | ||||
| 	      tot = -1; | ||||
| 	      set_errno (EAGAIN); | ||||
| 	    } | ||||
| 	  goto out; | ||||
| 	} | ||||
|       else if (!GetOverlappedResult (get_handle (), &io_status, &n, TRUE)) | ||||
| 	goto err; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user