Use plain data arrays for Buffer storage
TRAC #12299
Signed-off-by: Andrew Lewycky
Signed-off-by: Daniel Koch

Author:    Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@299 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index b712d7c..4b91b2c 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -506,7 +506,7 @@
 
     try
     {
-        if (size < 0)
+        if (size < 0 || offset < 0)
         {
             return error(GL_INVALID_VALUE);
         }
@@ -539,12 +539,12 @@
                 return error(GL_INVALID_OPERATION);
             }
 
-            GLenum err = buffer->bufferSubData(data, size, offset);
-
-            if (err != GL_NO_ERROR)
+            if ((size_t)size + offset > buffer->size())
             {
-                return error(err);
+                return error(GL_INVALID_VALUE);
             }
+
+            buffer->bufferSubData(data, size, offset);
         }
     }
     catch(std::bad_alloc&)