summaryrefslogtreecommitdiffstats
path: root/WebCore/html/canvas/WebGLUnsignedIntArray.cpp
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2010-04-27 16:31:00 +0100
committerSteve Block <steveblock@google.com>2010-05-11 14:42:12 +0100
commitdcc8cf2e65d1aa555cce12431a16547e66b469ee (patch)
tree92a8d65cd5383bca9749f5327fb5e440563926e6 /WebCore/html/canvas/WebGLUnsignedIntArray.cpp
parentccac38a6b48843126402088a309597e682f40fe6 (diff)
downloadexternal_webkit-dcc8cf2e65d1aa555cce12431a16547e66b469ee.zip
external_webkit-dcc8cf2e65d1aa555cce12431a16547e66b469ee.tar.gz
external_webkit-dcc8cf2e65d1aa555cce12431a16547e66b469ee.tar.bz2
Merge webkit.org at r58033 : Initial merge by git
Change-Id: If006c38561af287c50cd578d251629b51e4d8cd1
Diffstat (limited to 'WebCore/html/canvas/WebGLUnsignedIntArray.cpp')
-rw-r--r--WebCore/html/canvas/WebGLUnsignedIntArray.cpp37
1 files changed, 13 insertions, 24 deletions
diff --git a/WebCore/html/canvas/WebGLUnsignedIntArray.cpp b/WebCore/html/canvas/WebGLUnsignedIntArray.cpp
index 97910f9..59d895f 100644
--- a/WebCore/html/canvas/WebGLUnsignedIntArray.cpp
+++ b/WebCore/html/canvas/WebGLUnsignedIntArray.cpp
@@ -35,7 +35,7 @@ namespace WebCore {
PassRefPtr<WebGLUnsignedIntArray> WebGLUnsignedIntArray::create(unsigned length)
{
- RefPtr<WebGLArrayBuffer> buffer = WebGLArrayBuffer::create(length * sizeof(unsigned int));
+ RefPtr<WebGLArrayBuffer> buffer = WebGLArrayBuffer::create(length, sizeof(unsigned int));
return create(buffer, 0, length);
}
@@ -48,25 +48,17 @@ PassRefPtr<WebGLUnsignedIntArray> WebGLUnsignedIntArray::create(unsigned int* ar
}
PassRefPtr<WebGLUnsignedIntArray> WebGLUnsignedIntArray::create(PassRefPtr<WebGLArrayBuffer> buffer,
- int byteOffset,
+ unsigned byteOffset,
unsigned length)
{
- // Make sure the offset results in valid alignment.
- if ((byteOffset % sizeof(unsigned int)) != 0) {
- return NULL;
- }
-
- if (buffer) {
- // Check to make sure we are talking about a valid region of
- // the given WebGLArrayBuffer's storage.
- if ((byteOffset + (length * sizeof(unsigned int))) > buffer->byteLength())
- return NULL;
- }
+ RefPtr<WebGLArrayBuffer> buf(buffer);
+ if (!verifySubRange<unsigned int>(buf, byteOffset, length))
+ return 0;
- return adoptRef(new WebGLUnsignedIntArray(buffer, byteOffset, length));
+ return adoptRef(new WebGLUnsignedIntArray(buf, byteOffset, length));
}
-WebGLUnsignedIntArray::WebGLUnsignedIntArray(PassRefPtr<WebGLArrayBuffer> buffer, int byteOffset, unsigned length)
+WebGLUnsignedIntArray::WebGLUnsignedIntArray(PassRefPtr<WebGLArrayBuffer> buffer, unsigned byteOffset, unsigned length)
: WebGLArray(buffer, byteOffset)
, m_size(length)
{
@@ -80,15 +72,12 @@ unsigned WebGLUnsignedIntArray::byteLength() const {
return m_size * sizeof(unsigned int);
}
-PassRefPtr<WebGLArray> WebGLUnsignedIntArray::slice(unsigned offset, unsigned length) {
- // Check to make sure the specified region is within the bounds of
- // the WebGLArrayBuffer.
- unsigned startByte = m_byteOffset + offset * sizeof(unsigned int);
- unsigned limitByte = startByte + length * sizeof(unsigned int);
- unsigned bufferLength = buffer()->byteLength();
- if (startByte >= bufferLength || limitByte > bufferLength)
- return 0;
- return create(buffer(), startByte, length);
+PassRefPtr<WebGLArray> WebGLUnsignedIntArray::slice(int start, int end)
+{
+ unsigned offset, length;
+ calculateOffsetAndLength(start, end, m_size, &offset, &length);
+ clampOffsetAndNumElements<unsigned int>(buffer(), m_byteOffset, &offset, &length);
+ return create(buffer(), offset, length);
}
void WebGLUnsignedIntArray::set(WebGLUnsignedIntArray* array, unsigned offset, ExceptionCode& ec) {