Index: src/typedarray.js |
diff --git a/src/typedarray.js b/src/typedarray.js |
index 57d0c60f9ba00dfd4a00e1649d872057d76269f8..891b4d7d272e82547a02955c09cfced80d90f7a5 100644 |
--- a/src/typedarray.js |
+++ b/src/typedarray.js |
@@ -259,6 +259,9 @@ function DataViewGetInt8(offset, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.getInt8', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
return %DataViewGetInt8(this, |
ToPositiveDataViewOffset(offset), |
!!little_endian); |
@@ -269,6 +272,9 @@ function DataViewSetInt8(offset, value, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.setInt8', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
%DataViewSetInt8(this, |
ToPositiveDataViewOffset(offset), |
TO_NUMBER_INLINE(value), |
@@ -280,6 +286,9 @@ function DataViewGetUint8(offset, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.getUint8', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
return %DataViewGetUint8(this, |
ToPositiveDataViewOffset(offset), |
!!little_endian); |
@@ -290,6 +299,9 @@ function DataViewSetUint8(offset, value, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.setUint8', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
%DataViewSetUint8(this, |
ToPositiveDataViewOffset(offset), |
TO_NUMBER_INLINE(value), |
@@ -301,6 +313,9 @@ function DataViewGetInt16(offset, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.getInt16', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
return %DataViewGetInt16(this, |
ToPositiveDataViewOffset(offset), |
!!little_endian); |
@@ -311,6 +326,9 @@ function DataViewSetInt16(offset, value, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.setInt16', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
%DataViewSetInt16(this, |
ToPositiveDataViewOffset(offset), |
TO_NUMBER_INLINE(value), |
@@ -322,6 +340,9 @@ function DataViewGetUint16(offset, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.getUint16', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
return %DataViewGetUint16(this, |
ToPositiveDataViewOffset(offset), |
!!little_endian); |
@@ -332,6 +353,9 @@ function DataViewSetUint16(offset, value, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.setUint16', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
%DataViewSetUint16(this, |
ToPositiveDataViewOffset(offset), |
TO_NUMBER_INLINE(value), |
@@ -343,6 +367,9 @@ function DataViewGetInt32(offset, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.getInt32', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
return %DataViewGetInt32(this, |
ToPositiveDataViewOffset(offset), |
!!little_endian); |
@@ -353,6 +380,9 @@ function DataViewSetInt32(offset, value, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.setInt32', this]); |
} |
+ if (%_ArgumentsLength() < 2) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
%DataViewSetInt32(this, |
ToPositiveDataViewOffset(offset), |
TO_NUMBER_INLINE(value), |
@@ -364,6 +394,9 @@ function DataViewGetUint32(offset, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.getUint32', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
return %DataViewGetUint32(this, |
ToPositiveDataViewOffset(offset), |
!!little_endian); |
@@ -374,6 +407,9 @@ function DataViewSetUint32(offset, value, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.setUint32', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
%DataViewSetUint32(this, |
ToPositiveDataViewOffset(offset), |
TO_NUMBER_INLINE(value), |
@@ -385,6 +421,9 @@ function DataViewGetFloat32(offset, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.getFloat32', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
return %DataViewGetFloat32(this, |
ToPositiveDataViewOffset(offset), |
!!little_endian); |
@@ -395,6 +434,9 @@ function DataViewSetFloat32(offset, value, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.setFloat32', this]); |
} |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
+ } |
%DataViewSetFloat32(this, |
ToPositiveDataViewOffset(offset), |
TO_NUMBER_INLINE(value), |
@@ -406,9 +448,8 @@ function DataViewGetFloat64(offset, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.getFloat64', this]); |
} |
- offset = TO_INTEGER(offset); |
- if (offset < 0) { |
- throw MakeRangeError("invalid_data_view_accessor_offset"); |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
} |
return %DataViewGetFloat64(this, |
ToPositiveDataViewOffset(offset), |
@@ -420,9 +461,8 @@ function DataViewSetFloat64(offset, value, little_endian) { |
throw MakeTypeError('incompatible_method_reciever', |
['DataView.setFloat64', this]); |
} |
- offset = TO_INTEGER(offset); |
- if (offset < 0) { |
- throw MakeRangeError("invalid_data_view_accessor_offset"); |
+ if (%_ArgumentsLength() < 1) { |
+ throw MakeTypeError('invalid_argument'); |
} |
%DataViewSetFloat64(this, |
ToPositiveDataViewOffset(offset), |