| Index: gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
|
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
|
| index d9091dc3bddfbb69615248ae4cc619a6f65294c9..87de64c7e82ad11b7c4e8688cffb4790f575c6d4 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
|
| @@ -1566,7 +1566,12 @@ error::Error GLES2DecoderImpl::HandleGenBuffersImmediate(
|
| if (buffers == NULL) {
|
| return error::kOutOfBounds;
|
| }
|
| - if (!CheckUniqueAndNonNullIds(n, buffers) || !GenBuffersHelper(n, buffers)) {
|
| + auto buffers_copy = base::MakeUnique<GLuint[]>(n);
|
| + GLuint* buffers_safe = buffers_copy.get();
|
| + for (GLsizei i = 0; i < n; ++i)
|
| + buffers_safe[i] = buffers[i];
|
| + if (!CheckUniqueAndNonNullIds(n, buffers_safe) ||
|
| + !GenBuffersHelper(n, buffers_safe)) {
|
| return error::kInvalidArguments;
|
| }
|
| return error::kNoError;
|
| @@ -1603,8 +1608,12 @@ error::Error GLES2DecoderImpl::HandleGenFramebuffersImmediate(
|
| if (framebuffers == NULL) {
|
| return error::kOutOfBounds;
|
| }
|
| - if (!CheckUniqueAndNonNullIds(n, framebuffers) ||
|
| - !GenFramebuffersHelper(n, framebuffers)) {
|
| + auto framebuffers_copy = base::MakeUnique<GLuint[]>(n);
|
| + GLuint* framebuffers_safe = framebuffers_copy.get();
|
| + for (GLsizei i = 0; i < n; ++i)
|
| + framebuffers_safe[i] = framebuffers[i];
|
| + if (!CheckUniqueAndNonNullIds(n, framebuffers_safe) ||
|
| + !GenFramebuffersHelper(n, framebuffers_safe)) {
|
| return error::kInvalidArguments;
|
| }
|
| return error::kNoError;
|
| @@ -1626,8 +1635,12 @@ error::Error GLES2DecoderImpl::HandleGenRenderbuffersImmediate(
|
| if (renderbuffers == NULL) {
|
| return error::kOutOfBounds;
|
| }
|
| - if (!CheckUniqueAndNonNullIds(n, renderbuffers) ||
|
| - !GenRenderbuffersHelper(n, renderbuffers)) {
|
| + auto renderbuffers_copy = base::MakeUnique<GLuint[]>(n);
|
| + GLuint* renderbuffers_safe = renderbuffers_copy.get();
|
| + for (GLsizei i = 0; i < n; ++i)
|
| + renderbuffers_safe[i] = renderbuffers[i];
|
| + if (!CheckUniqueAndNonNullIds(n, renderbuffers_safe) ||
|
| + !GenRenderbuffersHelper(n, renderbuffers_safe)) {
|
| return error::kInvalidArguments;
|
| }
|
| return error::kNoError;
|
| @@ -1651,8 +1664,12 @@ error::Error GLES2DecoderImpl::HandleGenSamplersImmediate(
|
| if (samplers == NULL) {
|
| return error::kOutOfBounds;
|
| }
|
| - if (!CheckUniqueAndNonNullIds(n, samplers) ||
|
| - !GenSamplersHelper(n, samplers)) {
|
| + auto samplers_copy = base::MakeUnique<GLuint[]>(n);
|
| + GLuint* samplers_safe = samplers_copy.get();
|
| + for (GLsizei i = 0; i < n; ++i)
|
| + samplers_safe[i] = samplers[i];
|
| + if (!CheckUniqueAndNonNullIds(n, samplers_safe) ||
|
| + !GenSamplersHelper(n, samplers_safe)) {
|
| return error::kInvalidArguments;
|
| }
|
| return error::kNoError;
|
| @@ -1674,8 +1691,12 @@ error::Error GLES2DecoderImpl::HandleGenTexturesImmediate(
|
| if (textures == NULL) {
|
| return error::kOutOfBounds;
|
| }
|
| - if (!CheckUniqueAndNonNullIds(n, textures) ||
|
| - !GenTexturesHelper(n, textures)) {
|
| + auto textures_copy = base::MakeUnique<GLuint[]>(n);
|
| + GLuint* textures_safe = textures_copy.get();
|
| + for (GLsizei i = 0; i < n; ++i)
|
| + textures_safe[i] = textures[i];
|
| + if (!CheckUniqueAndNonNullIds(n, textures_safe) ||
|
| + !GenTexturesHelper(n, textures_safe)) {
|
| return error::kInvalidArguments;
|
| }
|
| return error::kNoError;
|
| @@ -1699,8 +1720,12 @@ error::Error GLES2DecoderImpl::HandleGenTransformFeedbacksImmediate(
|
| if (ids == NULL) {
|
| return error::kOutOfBounds;
|
| }
|
| - if (!CheckUniqueAndNonNullIds(n, ids) ||
|
| - !GenTransformFeedbacksHelper(n, ids)) {
|
| + auto ids_copy = base::MakeUnique<GLuint[]>(n);
|
| + GLuint* ids_safe = ids_copy.get();
|
| + for (GLsizei i = 0; i < n; ++i)
|
| + ids_safe[i] = ids[i];
|
| + if (!CheckUniqueAndNonNullIds(n, ids_safe) ||
|
| + !GenTransformFeedbacksHelper(n, ids_safe)) {
|
| return error::kInvalidArguments;
|
| }
|
| return error::kNoError;
|
| @@ -4769,8 +4794,12 @@ error::Error GLES2DecoderImpl::HandleGenQueriesEXTImmediate(
|
| if (queries == NULL) {
|
| return error::kOutOfBounds;
|
| }
|
| - if (!CheckUniqueAndNonNullIds(n, queries) ||
|
| - !GenQueriesEXTHelper(n, queries)) {
|
| + auto queries_copy = base::MakeUnique<GLuint[]>(n);
|
| + GLuint* queries_safe = queries_copy.get();
|
| + for (GLsizei i = 0; i < n; ++i)
|
| + queries_safe[i] = queries[i];
|
| + if (!CheckUniqueAndNonNullIds(n, queries_safe) ||
|
| + !GenQueriesEXTHelper(n, queries_safe)) {
|
| return error::kInvalidArguments;
|
| }
|
| return error::kNoError;
|
| @@ -4892,8 +4921,12 @@ error::Error GLES2DecoderImpl::HandleGenVertexArraysOESImmediate(
|
| if (arrays == NULL) {
|
| return error::kOutOfBounds;
|
| }
|
| - if (!CheckUniqueAndNonNullIds(n, arrays) ||
|
| - !GenVertexArraysOESHelper(n, arrays)) {
|
| + auto arrays_copy = base::MakeUnique<GLuint[]>(n);
|
| + GLuint* arrays_safe = arrays_copy.get();
|
| + for (GLsizei i = 0; i < n; ++i)
|
| + arrays_safe[i] = arrays[i];
|
| + if (!CheckUniqueAndNonNullIds(n, arrays_safe) ||
|
| + !GenVertexArraysOESHelper(n, arrays_safe)) {
|
| return error::kInvalidArguments;
|
| }
|
| return error::kNoError;
|
|
|