Mesa (master): st/mesa: fix invalid pointer use in st_texture_get_sampler_view()
Brian Paul
brianp at kemper.freedesktop.org
Mon Apr 21 14:33:28 UTC 2014
Module: Mesa
Branch: master
Commit: 27496af67f1a15a3a9aa5d5e09d43d9365101f71
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=27496af67f1a15a3a9aa5d5e09d43d9365101f71
Author: Brian Paul <brianp at vmware.com>
Date: Fri Apr 18 12:20:28 2014 -0600
st/mesa: fix invalid pointer use in st_texture_get_sampler_view()
The '**used' pointer was pointing into the stObj->sampler_views array.
If 'free' was null, we'd realloc that array, thus making the 'used'
pointer invalid. This soon led to memory errors.
Just change the pointer to be '*used' so it points directly at the
pipe_sampler_view.
Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>
---
src/mesa/state_tracker/st_texture.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/mesa/state_tracker/st_texture.c b/src/mesa/state_tracker/st_texture.c
index f664ef5..92035e8 100644
--- a/src/mesa/state_tracker/st_texture.c
+++ b/src/mesa/state_tracker/st_texture.c
@@ -443,7 +443,7 @@ struct pipe_sampler_view **
st_texture_get_sampler_view(struct st_context *st,
struct st_texture_object *stObj)
{
- struct pipe_sampler_view **used = NULL, **free = NULL;
+ struct pipe_sampler_view *used = NULL, **free = NULL;
GLuint i;
for (i = 0; i < stObj->num_sampler_views; ++i) {
@@ -455,7 +455,7 @@ st_texture_get_sampler_view(struct st_context *st,
return sv;
/* Wasn't the right one, but remember it as template */
- used = sv;
+ used = *sv;
} else {
/* Found a free slot, remember that */
free = sv;
@@ -475,7 +475,7 @@ st_texture_get_sampler_view(struct st_context *st,
/* Add just any sampler view to be used as a template */
if (used)
- pipe_sampler_view_reference(free, *used);
+ pipe_sampler_view_reference(free, used);
return free;
}
More information about the mesa-commit
mailing list