Fix zero-sized buffer copies to complete successfully in BufferCopySubData.

TRAC #22878

Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
Author: Jamie Madill

git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2150 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index bc3a56e..63fc244 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -8858,7 +8858,11 @@
 
             // TODO: Verify that readBuffer and writeBuffer are not currently mapped (GL_INVALID_OPERATION)
 
-            writeBuffer->copyBufferSubData(readBuffer, readOffset, writeOffset, size);
+            // if size is zero, the copy is a successful no-op
+            if (size > 0)
+            {
+                writeBuffer->copyBufferSubData(readBuffer, readOffset, writeOffset, size);
+            }
         }
     }
     catch(std::bad_alloc&)