On 29/01/2016 17:49, Ilia Mirkin wrote:
On Fri, Jan 29, 2016 at 11:08 AM, Axel Davy <axel.d...@ens.fr> wrote:
We forgot to reset vtxbuf.
This fixes some crashes.

Signed-off-by: Axel Davy <axel.d...@ens.fr>
Reviewed-by: Patrick Rudolph <s...@das-labor.org>
---
  src/gallium/state_trackers/nine/nine_state.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/gallium/state_trackers/nine/nine_state.c 
b/src/gallium/state_trackers/nine/nine_state.c
index 2e77d62..561a68e 100644
--- a/src/gallium/state_trackers/nine/nine_state.c
+++ b/src/gallium/state_trackers/nine/nine_state.c
@@ -1314,8 +1314,10 @@ nine_state_clear(struct nine_state *state, const boolean 
device)
      nine_bind(&state->vs, NULL);
      nine_bind(&state->ps, NULL);
      nine_bind(&state->vdecl, NULL);
-    for (i = 0; i < PIPE_MAX_ATTRIBS; ++i)
+    for (i = 0; i < PIPE_MAX_ATTRIBS; ++i) {
          nine_bind(&state->stream[i], NULL);
+        state->vtxbuf[i].buffer = NULL;
Not necessarily strictly wrong, but I would have expected a
pipe_resource_reference(&buffer, NULL) -- are you not referencing them
when setting either?

   -ilia

We are not referencing them, but we reference the d3d structure referencing it.

That is when we do nine_bind(&state->stream[i], NULL), the pipe_resource may get dereferenced if the item
is freed.

Probably would be better reference and unreference the pipe_resource, I will look into it to improve that patch.

Axel


+    }
      nine_bind(&state->idxbuf, NULL);
      for (i = 0; i < NINE_MAX_SAMPLERS; ++i) {
          if (device &&
--
2.7.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to