summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-10-08 12:43:04 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2013-10-08 12:43:04 +0200
commit7a6832497e8bd207424295242eda0ad70b854093 (patch)
tree6f01dbfcd0c1241562d32dd7659de964524ba89e
parent349ecb6b9d0acd759308f369400c5976d33705c7 (diff)
driver: fix potential segfault in etna_fetch_uniforms
-rw-r--r--src/driver/etna_shader.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/driver/etna_shader.c b/src/driver/etna_shader.c
index eae05be..ddff265 100644
--- a/src/driver/etna_shader.c
+++ b/src/driver/etna_shader.c
@@ -43,7 +43,7 @@ static void etna_fetch_uniforms(struct pipe_context *pipe, uint shader)
{
case PIPE_SHADER_VERTEX:
buf = &priv->vs_cbuf_s;
- if(buf->user_buffer)
+ if(buf->user_buffer && priv->vs)
{
memcpy(priv->shader_state.VS_UNIFORMS, buf->user_buffer, MIN2(buf->buffer_size, priv->vs->const_size * 4));
priv->dirty_bits |= ETNA_STATE_VS_UNIFORMS;
@@ -51,7 +51,7 @@ static void etna_fetch_uniforms(struct pipe_context *pipe, uint shader)
break;
case PIPE_SHADER_FRAGMENT:
buf = &priv->fs_cbuf_s;
- if(buf->user_buffer)
+ if(buf->user_buffer && priv->fs)
{
memcpy(priv->shader_state.PS_UNIFORMS, buf->user_buffer, MIN2(buf->buffer_size, priv->fs->const_size * 4));
priv->dirty_bits |= ETNA_STATE_PS_UNIFORMS;
@@ -232,7 +232,6 @@ static void etna_set_constant_buffer(struct pipe_context *pipe,
}
} else {
assert(buf->buffer == NULL && buf->user_buffer != NULL);
- assert(priv->vs && priv->fs);
/* support only user buffer for now */
if(likely(index == 0))
{