-
[emulator] Delete VAOs starting from highest · 5da143cbLingfeng Yang authored
If VAOs are deleted starting from 0, then the following happens when an app's context has genned two VAO's that are both != 0, and the first of the two nonzero VAOs is the current one: VAO 0 VAO 1 <- current VAO 2 in context dtor loop over vao map: delete vao 0 (done) delete vao 1: is current, so bind 0: in bind 0, we create a new map entry since 0 was deleted next loop iter deletes vao 0 again (done) *** at this point, vao 0 pointer refers to freed memory *** next loop iter wants to delete vao 2, but the current vao is 0 and refers to freed memory. then, in Context::deleteVertexArray: if (getCurrentVertexArray()->name...) <- Segmentation fault (core dumped) This CL deletes VAO 0 last. Change-Id: Ifa606ad7517cd213f21606577d3bdd8d810b640d Reviewed-on: https://swiftshader-review.googlesource.com/8350Reviewed-by:
Nicolas Capens <capn@google.com> Tested-by:
Lingfeng Yang <lfy@google.com>
5da143cb
×