From 5561b1584cb9329e37dc4fde95dadc56f354cafd Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sun, 21 Sep 2008 17:17:42 +0000
Subject: [PATCH] fix potential vc++ crashes

---
 Graphics/Geom.cpp | 6 +++---
 Graphics/Post.cpp | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Graphics/Geom.cpp b/Graphics/Geom.cpp
index 24aba1a5a9..793b851988 100644
--- a/Graphics/Geom.cpp
+++ b/Graphics/Geom.cpp
@@ -190,13 +190,12 @@ class drawGFace {
   void _drawVertexArray(VertexArray *va, bool useNormalArray, int forceColor=0, 
                         unsigned int color=0)
   {
-    if(!va) return;
+    if(!va || !va->getNumVertices()) return;
     glVertexPointer(3, GL_FLOAT, 0, va->getVertexArray());
-    glNormalPointer(GL_BYTE, 0, va->getNormalArray());
-    glColorPointer(4, GL_UNSIGNED_BYTE, 0, va->getColorArray());
     glEnableClientState(GL_VERTEX_ARRAY);
     if(useNormalArray){
       glEnable(GL_LIGHTING);
+      glNormalPointer(GL_BYTE, 0, va->getNormalArray());
       glEnableClientState(GL_NORMAL_ARRAY);
     }
     else
@@ -206,6 +205,7 @@ class drawGFace {
       glColor4ubv((GLubyte *) & color);
     }
     else{
+      glColorPointer(4, GL_UNSIGNED_BYTE, 0, va->getColorArray());
       glEnableClientState(GL_COLOR_ARRAY);
     }
     if(CTX.polygon_offset) glEnable(GL_POLYGON_OFFSET_FILL);
diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp
index efe9b7bde6..e547f3934d 100644
--- a/Graphics/Post.cpp
+++ b/Graphics/Post.cpp
@@ -985,7 +985,7 @@ static void addElementsInArrays(PView *p, bool preprocessNormalsOnly)
 
 static void drawArrays(PView *p, VertexArray *va, GLint type, bool useNormalArray)
 {
-  if(!va) return;
+  if(!va || !va->getNumVertices()) return;
 
   PViewOptions *opt = p->getOptions();
 
@@ -1033,15 +1033,15 @@ static void drawArrays(PView *p, VertexArray *va, GLint type, bool useNormalArra
   }
   else{
     glVertexPointer(3, GL_FLOAT, 0, va->getVertexArray());
-    glNormalPointer(GL_BYTE, 0, va->getNormalArray());
-    glColorPointer(4, GL_UNSIGNED_BYTE, 0, va->getColorArray());
     glEnableClientState(GL_VERTEX_ARRAY);
     if(useNormalArray){
       glEnable(GL_LIGHTING);
+      glNormalPointer(GL_BYTE, 0, va->getNormalArray());
       glEnableClientState(GL_NORMAL_ARRAY);
     }
     else
       glDisableClientState(GL_NORMAL_ARRAY);
+    glColorPointer(4, GL_UNSIGNED_BYTE, 0, va->getColorArray());
     glEnableClientState(GL_COLOR_ARRAY);
     glDrawArrays(type, 0, va->getNumVertices());
     glDisableClientState(GL_VERTEX_ARRAY);
-- 
GitLab