Index: chrome/nacl/nacl_listener.cc |
diff --git a/chrome/nacl/nacl_listener.cc b/chrome/nacl/nacl_listener.cc |
index bb8eea550911aaac0fa8ab1709a2a0a27b60b230..161efd44b6c07e2c148828bc18a894cf86cecbf9 100644 |
--- a/chrome/nacl/nacl_listener.cc |
+++ b/chrome/nacl/nacl_listener.cc |
@@ -234,20 +234,25 @@ void NaClListener::OnStart(const nacl::NaClStartParams& params) { |
# endif |
#endif |
- CHECK(handles.size() >= 1); |
- NaClHandle irt_handle = nacl::ToNativeHandle(handles[handles.size() - 1]); |
- handles.pop_back(); |
+ if (params.uses_irt) { |
+ CHECK(handles.size() >= 1); |
+ NaClHandle irt_handle = nacl::ToNativeHandle(handles[handles.size() - 1]); |
+ handles.pop_back(); |
#if defined(OS_WIN) |
- args->irt_fd = _open_osfhandle(reinterpret_cast<intptr_t>(irt_handle), |
- _O_RDONLY | _O_BINARY); |
- if (args->irt_fd < 0) { |
- LOG(ERROR) << "_open_osfhandle() failed"; |
- return; |
- } |
+ args->irt_fd = _open_osfhandle(reinterpret_cast<intptr_t>(irt_handle), |
+ _O_RDONLY | _O_BINARY); |
+ if (args->irt_fd < 0) { |
+ LOG(ERROR) << "_open_osfhandle() failed"; |
+ return; |
+ } |
#else |
- args->irt_fd = irt_handle; |
+ args->irt_fd = irt_handle; |
#endif |
+ } else { |
+ // Otherwise, the IRT handle is not even sent. |
+ args->irt_fd = -1; |
+ } |
if (params.validation_cache_enabled) { |
// SHA256 block size. |