Index: mojo/edk/system/data_pipe_consumer_dispatcher.cc |
diff --git a/mojo/edk/system/data_pipe_consumer_dispatcher.cc b/mojo/edk/system/data_pipe_consumer_dispatcher.cc |
index 2b3f5141fa6465a66bb0f86986f814b7562dda4c..fa103c3afb6fc7aa9479f14b7d5ed11e969dc1cf 100644 |
--- a/mojo/edk/system/data_pipe_consumer_dispatcher.cc |
+++ b/mojo/edk/system/data_pipe_consumer_dispatcher.cc |
@@ -58,7 +58,8 @@ MojoResult DataPipeConsumerDispatcher::ReadDataImplNoLock( |
if ((flags & MOJO_READ_DATA_FLAG_DISCARD)) { |
// These flags are mutally exclusive. |
- if ((flags & MOJO_READ_DATA_FLAG_QUERY)) |
+ if ((flags & MOJO_READ_DATA_FLAG_QUERY) || |
+ (flags & MOJO_READ_DATA_FLAG_PEEK)) |
return MOJO_RESULT_INVALID_ARGUMENT; |
DVLOG_IF(2, !elements.IsNull()) |
<< "Discard mode: ignoring non-null |elements|"; |
@@ -67,6 +68,8 @@ MojoResult DataPipeConsumerDispatcher::ReadDataImplNoLock( |
} |
if ((flags & MOJO_READ_DATA_FLAG_QUERY)) { |
+ if ((flags & MOJO_READ_DATA_FLAG_PEEK)) |
+ return MOJO_RESULT_INVALID_ARGUMENT; |
DCHECK(!(flags & MOJO_READ_DATA_FLAG_DISCARD)); // Handled above. |
DVLOG_IF(2, !elements.IsNull()) |
<< "Query mode: ignoring non-null |elements|"; |
@@ -74,7 +77,10 @@ MojoResult DataPipeConsumerDispatcher::ReadDataImplNoLock( |
} |
return data_pipe_->ConsumerReadData( |
- elements, num_bytes, (flags & MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
+ elements, |
+ num_bytes, |
+ !!(flags & MOJO_READ_DATA_FLAG_ALL_OR_NONE), |
+ !!(flags & MOJO_READ_DATA_FLAG_PEEK)); |
} |
MojoResult DataPipeConsumerDispatcher::BeginReadDataImplNoLock( |
@@ -85,7 +91,8 @@ MojoResult DataPipeConsumerDispatcher::BeginReadDataImplNoLock( |
// These flags may not be used in two-phase mode. |
if ((flags & MOJO_READ_DATA_FLAG_DISCARD) || |
- (flags & MOJO_READ_DATA_FLAG_QUERY)) |
+ (flags & MOJO_READ_DATA_FLAG_QUERY) || |
+ (flags & MOJO_READ_DATA_FLAG_PEEK)) |
return MOJO_RESULT_INVALID_ARGUMENT; |
return data_pipe_->ConsumerBeginReadData( |