Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions core/src/avm2/globals/Error.as
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ package {
};
}

public static native function getErrorMessage(id:int):String;

[Ruffle(NativeAccessible)]
public var name:String = "Error";

Expand Down
15 changes: 14 additions & 1 deletion core/src/avm2/globals/error.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,22 @@
use crate::avm2::activation::Activation;
pub use crate::avm2::object::error_allocator;
use crate::avm2::parameters::ParametersExt;
use crate::avm2::string::AvmString;
use crate::avm2::value::Value;
use crate::avm2::Error;
use crate::PlayerMode;
use crate::{avm2_stub_method, PlayerMode};

pub fn get_error_message<'gc>(
activation: &mut Activation<'_, 'gc>,
_this: Value<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> {
avm2_stub_method!(activation, "Error", "getErrorMessage");

let id = args.get_i32(0);
let message = format!("Error #{id}");
Ok(AvmString::new_utf8(activation.gc(), message).into())
}

pub fn get_stack_trace<'gc>(
activation: &mut Activation<'_, 'gc>,
Expand Down
19 changes: 19 additions & 0 deletions tests/tests/swfs/avm2/error_geterrormessage/Test.as
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package {
import flash.display.Sprite;

public class Test extends Sprite {
public function Test() {
trace(Error.getErrorMessage(-1));
trace(Error.getErrorMessage(0));
trace(Error.getErrorMessage(1));
trace(Error.getErrorMessage(42));
trace(Error.getErrorMessage(100));
// TODO:
// Error #1000: The system is out of memory.
// trace(Error.getErrorMessage(1000));
// Error #1042: Not an ABC file. major_version=%1 minor_version=%2.
// trace(Error.getErrorMessage(1042));
trace(Error.getErrorMessage(10000));
}
}
}
6 changes: 6 additions & 0 deletions tests/tests/swfs/avm2/error_geterrormessage/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Error #-1
Error #0
Error #1
Error #42
Error #100
Error #10000
Binary file added tests/tests/swfs/avm2/error_geterrormessage/test.swf
Binary file not shown.
1 change: 1 addition & 0 deletions tests/tests/swfs/avm2/error_geterrormessage/test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
num_frames = 1
Loading