Commit e09f1c82 by Jamie Madill

Fix crash on zero size but non-NULL bufferData.

Could cause a crash when running the WebGL CTS with Firefox. BUG=angle:675 Change-Id: I58bf9eed622660d4702b775f368ff9cbd693197a Reviewed-on: https://chromium-review.googlesource.com/203456Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarNicolas Capens <nicolascapens@chromium.org>
parent 6ed8d8af
...@@ -221,7 +221,7 @@ void BufferStorage11::setData(const void* data, size_t size, size_t offset) ...@@ -221,7 +221,7 @@ void BufferStorage11::setData(const void* data, size_t size, size_t offset)
size_t requiredSize = size + offset; size_t requiredSize = size + offset;
mSize = std::max(mSize, requiredSize); mSize = std::max(mSize, requiredSize);
if (data) if (data && size > 0)
{ {
NativeBuffer11 *stagingBuffer = getStagingBuffer(); NativeBuffer11 *stagingBuffer = getStagingBuffer();
......
...@@ -97,6 +97,21 @@ TEST_F(BufferDataTest, null_data) ...@@ -97,6 +97,21 @@ TEST_F(BufferDataTest, null_data)
} }
} }
TEST_F(BufferDataTest, zero_nonnull_data)
{
glBindBuffer(GL_ARRAY_BUFFER, mBuffer);
EXPECT_GL_NO_ERROR();
char *zeroData = new char[0];
glBufferData(GL_ARRAY_BUFFER, 0, zeroData, GL_STATIC_DRAW);
EXPECT_GL_NO_ERROR();
glBufferSubData(GL_ARRAY_BUFFER, 0, 0, zeroData);
EXPECT_GL_NO_ERROR();
delete [] zeroData;
}
TEST_F(BufferDataTest, huge_setdata_should_not_crash) TEST_F(BufferDataTest, huge_setdata_should_not_crash)
{ {
glBindBuffer(GL_ARRAY_BUFFER, mBuffer); glBindBuffer(GL_ARRAY_BUFFER, mBuffer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment