diff --git a/CHANGELOG.md b/CHANGELOG.md index d7eeb3e8..020403dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ Bug fixes --------- * `from_dynamic` now supports deserializing `Option`. +* BLOB's no longer panic when accessed with an out-of-bounds index. Enhancements ------------ diff --git a/src/engine.rs b/src/engine.rs index ac5956bc..aea6638a 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -2052,7 +2052,12 @@ impl Engine { index as usize }; - let value = (arr[arr_idx] as INT).into(); + let value = arr + .get(arr_idx) + .map(|&v| (v as INT).into()) + .ok_or_else(|| { + Box::new(EvalAltResult::ErrorArrayBounds(arr_len, index, idx_pos)) + })?; Ok(Target::BlobByte(target, arr_idx, value)) }