diff --git a/src/aml/mod.rs b/src/aml/mod.rs index 6d67f282..2e043463 100644 --- a/src/aml/mod.rs +++ b/src/aml/mod.rs @@ -529,10 +529,17 @@ where let source1 = source1.as_buffer()?; let source2 = source2.as_buffer()?; let result = { - let mut buffer = Vec::from(source1); - buffer.extend_from_slice(source2); + fn strip_end_tag(buf: &[u8]) -> &[u8] { + if buf.len() >= 2 && buf[buf.len() - 2] == 0x79 { + buf.split_at(buf.len() - 2).0 + } else { + buf + } + } + let mut buffer = Vec::from(strip_end_tag(source1)); + buffer.extend_from_slice(strip_end_tag(source2)); // Add a new end-tag - buffer.push(0x78); + buffer.push(0x79); // Don't calculate the new real checksum - just use 0 buffer.push(0x00); Object::Buffer(buffer).wrap()