avm1: Allow SharedObject creation even if URL is unknown (fix #2150)

Allow SharedObjects to be created even in the case that the movie
URL is None (for example, loading an SWF from bytes). Use a dummy
"localhost" URL.
This commit is contained in:
Mike Welsh 2020-12-29 12:01:50 -08:00
parent ff5ecf9754
commit 802aa9b7a7
1 changed files with 9 additions and 4 deletions

View File

@ -176,11 +176,16 @@ pub fn get_local<'gc>(
return Ok(Value::Null); return Ok(Value::Null);
}; };
let mut movie_url = if let Some(url) = movie.url().and_then(|url| url::Url::parse(url).ok()) { let mut movie_url = if let Some(url) = movie.url() {
url if let Ok(url) = url::Url::parse(url) {
url
} else {
log::error!("SharedObject::get_local: Unable to parse movie URL");
return Ok(Value::Null);
}
} else { } else {
log::error!("SharedObject::get_local: Unable to parse movie URL"); // No URL (loading local data). Use a dummy URL to allow SharedObjects to work.
return Ok(Value::Null); url::Url::parse("file://localhost").unwrap()
}; };
movie_url.set_query(None); movie_url.set_query(None);
movie_url.set_fragment(None); movie_url.set_fragment(None);