Skip to content

Commit 5304005

Browse files
committed
use isize instead of usize in dataview
1 parent 50ef8b9 commit 5304005

File tree

1 file changed

+38
-24
lines changed
  • crates/yavashark_env/src/builtins/arraybuffer

1 file changed

+38
-24
lines changed

crates/yavashark_env/src/builtins/arraybuffer/dataview.rs

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,14 @@ impl DataView {
6565
})
6666
}
6767

68-
pub fn extract<T: FromBytes>(&self, offset: usize, le: bool) -> Res<T> {
68+
pub fn extract<T: FromBytes>(&self, offset: isize, le: bool) -> Res<T> {
69+
if offset < 0 {
70+
return Err(Error::range("Out of bounds"));
71+
}
72+
73+
let offset = offset as usize;
74+
75+
6976
if offset > self.byte_length {
7077
return Err(Error::range("Out of bounds"));
7178
}
@@ -91,7 +98,14 @@ impl DataView {
9198
Ok(T::from_bytes(bytes, le))
9299
}
93100

94-
pub fn set<T: FromBytes>(&self, offset: usize, value: T, le: bool) -> Res {
101+
pub fn set<T: FromBytes>(&self, offset: isize, value: T, le: bool) -> Res {
102+
if offset < 0 {
103+
return Err(Error::range("Out of bounds"));
104+
}
105+
106+
let offset = offset as usize;
107+
108+
95109
if offset > self.byte_length {
96110
return Err(Error::range("Out of bounds"));
97111
}
@@ -137,15 +151,15 @@ impl DataView {
137151
}
138152

139153
#[prop("getFloat16")]
140-
pub fn get_float16(&self, offset: usize, little: Option<bool>) -> ValueResult {
154+
pub fn get_float16(&self, offset: isize, little: Option<bool>) -> ValueResult {
141155
let le = little.unwrap_or(false);
142156

143157
let value = self.extract::<f16>(offset, le)?;
144158

145159
Ok(value.into())
146160
}
147161
#[prop("getFloat32")]
148-
pub fn get_float32(&self, offset: usize, little: Option<bool>) -> ValueResult {
162+
pub fn get_float32(&self, offset: isize, little: Option<bool>) -> ValueResult {
149163
let le = little.unwrap_or(false);
150164

151165
let value = self.extract::<f32>(offset, le)?;
@@ -154,79 +168,79 @@ impl DataView {
154168
}
155169

156170
#[prop("getFloat64")]
157-
pub fn get_float64(&self, offset: usize, little: Option<bool>) -> ValueResult {
171+
pub fn get_float64(&self, offset: isize, little: Option<bool>) -> ValueResult {
158172
let le = little.unwrap_or(false);
159173
let value = self.extract::<f64>(offset, le)?;
160174

161175
Ok(value.into())
162176
}
163177

164178
#[prop("getInt8")]
165-
pub fn get_int8(&self, offset: usize, little: Option<bool>) -> ValueResult {
179+
pub fn get_int8(&self, offset: isize, little: Option<bool>) -> ValueResult {
166180
let le = little.unwrap_or(false);
167181
let value = self.extract::<i8>(offset, le)?;
168182

169183
Ok(value.into())
170184
}
171185

172186
#[prop("getInt16")]
173-
pub fn get_int16(&self, offset: usize, little: Option<bool>) -> ValueResult {
187+
pub fn get_int16(&self, offset: isize, little: Option<bool>) -> ValueResult {
174188
let le = little.unwrap_or(false);
175189
let value = self.extract::<i16>(offset, le)?;
176190

177191
Ok(value.into())
178192
}
179193

180194
#[prop("getInt32")]
181-
pub fn get_int32(&self, offset: usize, little: Option<bool>) -> ValueResult {
195+
pub fn get_int32(&self, offset: isize, little: Option<bool>) -> ValueResult {
182196
let le = little.unwrap_or(false);
183197
let value = self.extract::<i32>(offset, le)?;
184198

185199
Ok(value.into())
186200
}
187201

188202
#[prop("getBigInt64")]
189-
pub fn get_big_int64(&self, offset: usize, little: Option<bool>) -> ValueResult {
203+
pub fn get_big_int64(&self, offset: isize, little: Option<bool>) -> ValueResult {
190204
let le = little.unwrap_or(false);
191205
let value = self.extract::<i64>(offset, le)?;
192206

193207
Ok(BigInt::from(value).into())
194208
}
195209

196210
#[prop("getUint8")]
197-
pub fn get_uint8(&self, offset: usize, le: Option<bool>) -> ValueResult {
211+
pub fn get_uint8(&self, offset: isize, le: Option<bool>) -> ValueResult {
198212
let le = le.unwrap_or(false);
199213
let value = self.extract::<u8>(offset, le)?;
200214

201215
Ok(value.into())
202216
}
203217

204218
#[prop("getUint16")]
205-
pub fn get_uint16(&self, offset: usize, little: Option<bool>) -> ValueResult {
219+
pub fn get_uint16(&self, offset: isize, little: Option<bool>) -> ValueResult {
206220
let le = little.unwrap_or(false);
207221
let value = self.extract::<u16>(offset, le)?;
208222

209223
Ok(value.into())
210224
}
211225

212226
#[prop("getUint32")]
213-
pub fn get_uint32(&self, offset: usize, little: Option<bool>) -> ValueResult {
227+
pub fn get_uint32(&self, offset: isize, little: Option<bool>) -> ValueResult {
214228
let le = little.unwrap_or(false);
215229
let value = self.extract::<u32>(offset, le)?;
216230

217231
Ok(value.into())
218232
}
219233

220234
#[prop("getBigUint64")]
221-
pub fn get_big_uint64(&self, offset: usize, little: Option<bool>) -> ValueResult {
235+
pub fn get_big_uint64(&self, offset: isize, little: Option<bool>) -> ValueResult {
222236
let le = little.unwrap_or(false);
223237
let value = self.extract::<u64>(offset, le)?;
224238

225239
Ok(BigInt::from(value).into())
226240
}
227241

228242
#[prop("setFloat16")]
229-
pub fn set_float16(&self, offset: usize, value: f32, little: Option<bool>) -> ValueResult {
243+
pub fn set_float16(&self, offset: isize, value: f32, little: Option<bool>) -> ValueResult {
230244
let le = little.unwrap_or(false);
231245
let value = f16::from_f32(value);
232246

@@ -236,7 +250,7 @@ impl DataView {
236250
}
237251

238252
#[prop("setFloat32")]
239-
pub fn set_float32(&self, offset: usize, value: f32, little: Option<bool>) -> ValueResult {
253+
pub fn set_float32(&self, offset: isize, value: f32, little: Option<bool>) -> ValueResult {
240254
let le = little.unwrap_or(false);
241255

242256
self.set(offset, value, le)?;
@@ -245,7 +259,7 @@ impl DataView {
245259
}
246260

247261
#[prop("setFloat64")]
248-
pub fn set_float64(&self, offset: usize, value: f64, little: Option<bool>) -> ValueResult {
262+
pub fn set_float64(&self, offset: isize, value: f64, little: Option<bool>) -> ValueResult {
249263
let le = little.unwrap_or(false);
250264

251265
self.set(offset, value, le)?;
@@ -254,7 +268,7 @@ impl DataView {
254268
}
255269

256270
#[prop("setInt8")]
257-
pub fn set_int8(&self, offset: usize, value: i8, little: Option<bool>) -> ValueResult {
271+
pub fn set_int8(&self, offset: isize, value: i8, little: Option<bool>) -> ValueResult {
258272
let le = little.unwrap_or(false);
259273

260274
self.set(offset, value, le)?;
@@ -263,7 +277,7 @@ impl DataView {
263277
}
264278

265279
#[prop("setInt16")]
266-
pub fn set_int16(&self, offset: usize, value: i16, little: Option<bool>) -> ValueResult {
280+
pub fn set_int16(&self, offset: isize, value: i16, little: Option<bool>) -> ValueResult {
267281
let le = little.unwrap_or(false);
268282

269283
self.set(offset, value, le)?;
@@ -272,7 +286,7 @@ impl DataView {
272286
}
273287

274288
#[prop("setInt32")]
275-
pub fn set_int32(&self, offset: usize, value: i32, little: Option<bool>) -> ValueResult {
289+
pub fn set_int32(&self, offset: isize, value: i32, little: Option<bool>) -> ValueResult {
276290
let le = little.unwrap_or(false);
277291

278292
self.set(offset, value, le)?;
@@ -283,7 +297,7 @@ impl DataView {
283297
#[prop("setBigInt64")]
284298
pub fn set_big_int64(
285299
&self,
286-
offset: usize,
300+
offset: isize,
287301
value: &BigInt,
288302
little: Option<bool>,
289303
) -> ValueResult {
@@ -297,7 +311,7 @@ impl DataView {
297311
}
298312

299313
#[prop("setUint8")]
300-
pub fn set_uint8(&self, offset: usize, value: u8, little: Option<bool>) -> ValueResult {
314+
pub fn set_uint8(&self, offset: isize, value: u8, little: Option<bool>) -> ValueResult {
301315
let le = little.unwrap_or(false);
302316

303317
self.set(offset, value, le)?;
@@ -306,7 +320,7 @@ impl DataView {
306320
}
307321

308322
#[prop("setUint16")]
309-
pub fn set_uint16(&self, offset: usize, value: u16, little: Option<bool>) -> ValueResult {
323+
pub fn set_uint16(&self, offset: isize, value: u16, little: Option<bool>) -> ValueResult {
310324
let le = little.unwrap_or(false);
311325

312326
self.set(offset, value, le)?;
@@ -315,7 +329,7 @@ impl DataView {
315329
}
316330

317331
#[prop("setUint32")]
318-
pub fn set_uint32(&self, offset: usize, value: u32, little: Option<bool>) -> ValueResult {
332+
pub fn set_uint32(&self, offset: isize, value: u32, little: Option<bool>) -> ValueResult {
319333
let le = little.unwrap_or(false);
320334

321335
self.set(offset, value, le)?;
@@ -326,7 +340,7 @@ impl DataView {
326340
#[prop("setBigUint64")]
327341
pub fn set_big_uint64(
328342
&self,
329-
offset: usize,
343+
offset: isize,
330344
value: &BigInt,
331345
little: Option<bool>,
332346
) -> ValueResult {

0 commit comments

Comments
 (0)