Fixed object references
This commit is contained in:
@@ -48,7 +48,7 @@ pub fn parse_data_ref_obj(data: &[u8],
|
||||
match parse_super_name(data, ctx) {
|
||||
Ok(res) => match res.val {
|
||||
AmlValue::String(s) => Ok(AmlParseType {
|
||||
val: AmlValue::ObjectReference(ObjectReference::NamedObj(s)),
|
||||
val: AmlValue::ObjectReference(ObjectReference::Object(s)),
|
||||
len: res.len
|
||||
}),
|
||||
_ => Ok(res)
|
||||
|
||||
@@ -758,7 +758,7 @@ fn parse_connect_field(data: &[u8],
|
||||
} else {
|
||||
let name = parse_name_string(&data[1..], ctx)?;
|
||||
Ok(AmlParseType {
|
||||
val: AmlValue::ObjectReference(ObjectReference::NamedObj(name.val.get_as_string()?)),
|
||||
val: AmlValue::Alias(name.val.get_as_string()?),
|
||||
len: name.len + 1
|
||||
})
|
||||
}
|
||||
|
||||
@@ -28,8 +28,7 @@ pub enum FieldSelector {
|
||||
pub enum ObjectReference {
|
||||
ArgObj(u8),
|
||||
LocalObj(u8),
|
||||
NamedObj(String),
|
||||
Object(Box<AmlValue>),
|
||||
Object(String),
|
||||
Index(Box<AmlValue>, Box<AmlValue>)
|
||||
}
|
||||
|
||||
@@ -98,6 +97,7 @@ impl Clone for Accessor {
|
||||
pub enum AmlValue {
|
||||
None,
|
||||
Uninitialized,
|
||||
Alias(String),
|
||||
Buffer(Vec<u8>),
|
||||
BufferField(BufferField),
|
||||
DDBHandle(Vec<String>),
|
||||
|
||||
@@ -44,7 +44,7 @@ fn parse_alias_op(data: &[u8],
|
||||
let local_scope_string = get_namespace_string(ctx.scope.clone(), source_name.val)?;
|
||||
let local_alias_string = get_namespace_string(ctx.scope.clone(), alias_name.val)?;
|
||||
|
||||
ctx.add_to_namespace(local_scope_string, AmlValue::ObjectReference(ObjectReference::NamedObj(local_alias_string)))?;
|
||||
ctx.add_to_namespace(local_scope_string, AmlValue::Alias(local_alias_string))?;
|
||||
|
||||
Ok(AmlParseType {
|
||||
val: AmlValue::None,
|
||||
|
||||
@@ -151,7 +151,7 @@ fn parse_def_load(data: &[u8],
|
||||
let name = parse_name_string(&data[2..], ctx)?;
|
||||
let ddb_handle_object = parse_super_name(&data[2 + name.len..], ctx)?;
|
||||
|
||||
let tbl = ctx.get(AmlValue::ObjectReference(ObjectReference::NamedObj(name.val.get_as_string()?))).get_as_buffer()?;
|
||||
let tbl = ctx.get(name.val).get_as_buffer()?;
|
||||
let sdt = unsafe { &*(tbl.as_ptr() as *const Sdt) };
|
||||
|
||||
if is_aml_table(sdt) {
|
||||
|
||||
@@ -217,7 +217,7 @@ fn parse_package_elements_list(data: &[u8],
|
||||
} else {
|
||||
let d = parse_name_string(&data[current_offset..], ctx)?;
|
||||
AmlParseType {
|
||||
val: AmlValue::ObjectReference(ObjectReference::NamedObj(d.val.get_as_string()?)),
|
||||
val: AmlValue::ObjectReference(ObjectReference::Object(d.val.get_as_string()?)),
|
||||
len: d.len
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user