Commit 152ed093 by Jamie Madill

Do not dereference a NULL pointer when retrieving the base level image of an…

Do not dereference a NULL pointer when retrieving the base level image of an empty 2D array texture. TRAC #23957 Signed-off-by: Geoff Lang Signed-off-by: Shannon Woods
parent bfc93bba
...@@ -2335,7 +2335,7 @@ void Texture2DArray::generateMipmaps() ...@@ -2335,7 +2335,7 @@ void Texture2DArray::generateMipmaps()
const rx::Image *Texture2DArray::getBaseLevelImage() const const rx::Image *Texture2DArray::getBaseLevelImage() const
{ {
return mImageArray[0][0]; return (mLayerCounts[0] > 0 ? mImageArray[0][0] : NULL);
} }
void Texture2DArray::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) void Texture2DArray::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source)
...@@ -2651,14 +2651,18 @@ void Texture2DArray::redefineImage(GLint level, GLint internalformat, GLsizei wi ...@@ -2651,14 +2651,18 @@ void Texture2DArray::redefineImage(GLint level, GLint internalformat, GLsizei wi
delete mImageArray[level][layer]; delete mImageArray[level][layer];
} }
delete[] mImageArray[level]; delete[] mImageArray[level];
mImageArray[level] = NULL;
mImageArray[level] = new rx::Image*[depth]();
mLayerCounts[level] = depth; mLayerCounts[level] = depth;
for (int layer = 0; layer < mLayerCounts[level]; layer++) if (depth > 0)
{ {
mImageArray[level][layer] = mRenderer->createImage(); mImageArray[level] = new rx::Image*[depth]();
mImageArray[level][layer]->redefine(mRenderer, GL_TEXTURE_2D_ARRAY, internalformat, width, height, 1, false);
for (int layer = 0; layer < mLayerCounts[level]; layer++)
{
mImageArray[level][layer] = mRenderer->createImage();
mImageArray[level][layer]->redefine(mRenderer, GL_TEXTURE_2D_ARRAY, internalformat, width, height, 1, false);
}
} }
if (mTexStorage) if (mTexStorage)
......
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