avm2: Update flash-lso version

This commit is contained in:
EmperorBale 2021-08-09 13:30:23 -07:00 committed by Mike Welsh
parent efb3062d98
commit 83005a7ce5
3 changed files with 9 additions and 6 deletions

View File

@ -38,7 +38,7 @@ nellymoser-rs = { git = "https://github.com/ruffle-rs/nellymoser" }
h263-rs = { git = "https://github.com/ruffle-rs/h263-rs", rev = "03dcd486e88381635647a7386105cb802921b69c", optional = true }
h263-rs-yuv = { git = "https://github.com/ruffle-rs/h263-rs", rev = "03dcd486e88381635647a7386105cb802921b69c", optional = true }
regress = "0.4"
flash-lso = { git = "https://github.com/ruffle-rs/rust-flash-lso" }
flash-lso = { git = "https://github.com/ruffle-rs/rust-flash-lso", rev = "19fecd07b9888c4bdaa66771c468095783b52bed" }
json = "0.12.4"
lzma-rs = {version = "0.2.0", optional = true }
dasp = { git = "https://github.com/RustAudio/dasp", rev = "f05a703", features = ["interpolate", "interpolate-linear", "signal"] }

View File

@ -423,7 +423,7 @@ pub fn get_local<'gc>(
if let Some(saved) = activation.context.storage.get(&full_name) {
// Attempt to load it as an Lso
if let Ok(lso) = flash_lso::read::Reader::default().parse(&saved) {
data = deserialize_lso(activation, &lso.1)?.into();
data = deserialize_lso(activation, &lso)?.into();
} else {
// Attempt to load legacy Json
if let Ok(saved_string) = String::from_utf8(saved) {
@ -567,7 +567,7 @@ pub fn flush<'gc>(
AMFVersion::AMF0,
);
let bytes = flash_lso::write::write_to_bytes(&mut lso);
let bytes = flash_lso::write::write_to_bytes(&mut lso).unwrap_or_default();
Ok(activation.context.storage.put(&name, &bytes).into())
}

View File

@ -11,7 +11,7 @@ use crate::character::Character;
use crate::string::AvmString;
use encoding_rs::Encoding;
use encoding_rs::UTF_8;
use flash_lso::amf0::read::parse_single_element as parse_amf0;
use flash_lso::amf0::read::AMF0Decoder;
use flash_lso::amf3::read::AMF3Decoder;
use flash_lso::types::Value as AmfValue;
use gc_arena::{GcCell, MutationContext};
@ -829,14 +829,17 @@ pub fn read_object<'gc>(
let bytes = bytearray.read_at(bytearray.bytes_available(), bytearray.position())?;
let (bytes_left, value) = match bytearray.object_encoding() {
ObjectEncoding::Amf0 => {
let (extra, amf) = parse_amf0(bytes).map_err(|_| "EOFError: Reached EOF")?;
let mut decoder = AMF0Decoder::default();
let (extra, amf) = decoder
.parse_single_element(bytes)
.map_err(|_| "Error: Invalid object")?;
(extra.len(), deserialize_value(activation, &amf)?)
}
ObjectEncoding::Amf3 => {
let mut decoder = AMF3Decoder::default();
let (extra, amf) = decoder
.parse_single_element(bytes)
.map_err(|_| "EOFError: Reached EOF")?;
.map_err(|_| "Error: Invalid object")?;
(extra.len(), deserialize_value(activation, &amf)?)
}
};