Ticket #9122: win_iocp_handle_service.ipp.patch
File win_iocp_handle_service.ipp.patch, 1.8 KB (added by , 9 years ago) |
---|
-
E:/lib/boost_1_53_0/1.53/boost/asio/detail/impl/win_iocp_handle_service.
old new 364 364 // A request to write 0 bytes on a handle is a no-op. 365 365 iocp_service_.on_completion(op); 366 366 } 367 367 else 368 368 { 369 DWORD bytes_transferred = 0; 369 370 op->Offset = offset & 0xFFFFFFFF; 370 371 op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF; 371 372 BOOL ok = ::WriteFile(impl.handle_, 372 373 boost::asio::buffer_cast<LPCVOID>(buffer), 373 374 static_cast<DWORD>(boost::asio::buffer_size(buffer)), 374 NULL, op);375 &bytes_transferred, op); 375 376 DWORD last_error = ::GetLastError(); 376 377 if (!ok && last_error != ERROR_IO_PENDING 377 378 && last_error != ERROR_MORE_DATA) 378 379 { 379 iocp_service_.on_completion(op, last_error, NULL);380 iocp_service_.on_completion(op, last_error, bytes_transferred); 380 381 } 381 382 else 382 383 { 383 384 iocp_service_.on_pending(op); 384 385 } … … 471 472 // A request to read 0 bytes on a handle is a no-op. 472 473 iocp_service_.on_completion(op); 473 474 } 474 475 else 475 476 { 477 DWORD bytes_transferred = 0; 476 478 op->Offset = offset & 0xFFFFFFFF; 477 479 op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF; 478 480 BOOL ok = ::ReadFile(impl.handle_, 479 481 boost::asio::buffer_cast<LPVOID>(buffer), 480 482 static_cast<DWORD>(boost::asio::buffer_size(buffer)), 481 NULL, op);483 &bytes_transferred, op); 482 484 DWORD last_error = ::GetLastError(); 483 485 if (!ok && last_error != ERROR_IO_PENDING 484 486 && last_error != ERROR_MORE_DATA) 485 487 { 486 iocp_service_.on_completion(op, last_error, NULL);488 iocp_service_.on_completion(op, last_error, bytes_transferred); 487 489 } 488 490 else 489 491 { 490 492 iocp_service_.on_pending(op); 491 493 }