| Index: gpu/command_buffer/service/gles2_cmd_decoder.cc | 
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc | 
| index 4d54739da5538081fa7d797233eeac0e9431ae54..5dd9f6440d27819ab9f65f007a4443a684c812a9 100644 | 
| --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc | 
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc | 
| @@ -7578,6 +7578,11 @@ void GLES2DecoderImpl::FinishReadPixels( | 
| } else { | 
| data = glMapBuffer(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY); | 
| } | 
| +    if (!data) { | 
| +      LOCAL_SET_GL_ERROR(GL_OUT_OF_MEMORY, "glMapBuffer", | 
| +                         "Unable to map memory for readback."); | 
| +      return; | 
| +    } | 
| memcpy(pixels, data, pixels_size); | 
| // GL_PIXEL_PACK_BUFFER_ARB is currently unused, so we don't | 
| // have to restore the state. | 
| @@ -7779,7 +7784,10 @@ error::Error GLES2DecoderImpl::HandleReadPixels(uint32 immediate_data_size, | 
| GLuint buffer = 0; | 
| glGenBuffersARB(1, &buffer); | 
| glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, buffer); | 
| -      glBufferData(GL_PIXEL_PACK_BUFFER_ARB, pixels_size, NULL, GL_STREAM_READ); | 
| +      // For ANGLE client version 2, GL_STREAM_READ is not available. | 
| +      const GLenum usage_hint = | 
| +          features().is_angle ? GL_STATIC_DRAW : GL_STREAM_READ; | 
| +      glBufferData(GL_PIXEL_PACK_BUFFER_ARB, pixels_size, NULL, usage_hint); | 
| GLenum error = glGetError(); | 
| if (error == GL_NO_ERROR) { | 
| glReadPixels(x, y, width, height, format, type, 0); | 
|  |