[emulator] Delete VAOs starting from highest

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/8350
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Lingfeng Yang <lfy@google.com>
diff --git a/src/OpenGL/common/NameSpace.hpp b/src/OpenGL/common/NameSpace.hpp
index d701219..ce55b5b 100644
--- a/src/OpenGL/common/NameSpace.hpp
+++ b/src/OpenGL/common/NameSpace.hpp
@@ -49,6 +49,11 @@
 		return map.begin()->first;
 	}
 
+	GLuint lastName()
+	{
+		return map.rbegin()->first;
+	}
+
 	GLuint allocate(ObjectType *object = nullptr)
 	{
 		GLuint name = freeName;
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 2421359..4ff6a35 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -210,7 +210,7 @@
 
 	while(!mVertexArrayNameSpace.empty())
 	{
-		deleteVertexArray(mVertexArrayNameSpace.firstName());
+		deleteVertexArray(mVertexArrayNameSpace.lastName());
 	}
 
 	while(!mTransformFeedbackNameSpace.empty())