mirror of
https://github.com/fluencelabs/parity-wasm
synced 2025-06-22 11:11:54 +00:00
working sections parse
This commit is contained in:
@ -34,7 +34,8 @@ impl Deserialize for Unparsed {
|
||||
|
||||
fn deserialize<R: io::Read>(reader: &mut R) -> Result<Self, Self::Error> {
|
||||
let len = VarUint32::deserialize(reader)?.into();
|
||||
let vec = vec![0u8; len];
|
||||
let mut vec = vec![0u8; len];
|
||||
reader.read_exact(&mut vec[..])?;
|
||||
Ok(Unparsed(vec))
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,10 @@ pub struct Module {
|
||||
|
||||
impl Module {
|
||||
pub fn version(&self) -> u32 { self.version }
|
||||
|
||||
pub fn sections(&self) -> &[Section] {
|
||||
&self.sections
|
||||
}
|
||||
}
|
||||
|
||||
impl Deserialize for Module {
|
||||
@ -19,6 +23,7 @@ impl Deserialize for Module {
|
||||
let mut sections = Vec::new();
|
||||
|
||||
let magic = Uint32::deserialize(reader)?;
|
||||
|
||||
let version = Uint32::deserialize(reader)?;
|
||||
|
||||
loop {
|
||||
@ -58,5 +63,6 @@ mod integration_tests {
|
||||
let module = Module::deserialize(&mut reader).expect("Should be deserialized");
|
||||
|
||||
assert_eq!(module.version(), 1);
|
||||
assert_eq!(module.sections().len(), 8);
|
||||
}
|
||||
}
|
@ -10,9 +10,12 @@ impl Deserialize for Section {
|
||||
type Error = Error;
|
||||
|
||||
fn deserialize<R: io::Read>(reader: &mut R) -> Result<Self, Self::Error> {
|
||||
let id = VarUint7::deserialize(reader)?;
|
||||
let id = match VarUint7::deserialize(reader) {
|
||||
// todo: be more selective detecting no more section
|
||||
Err(_) => { return Err(Error::UnexpectedEof); },
|
||||
Ok(id) => id,
|
||||
};
|
||||
let unparsed = Unparsed::deserialize(reader)?;
|
||||
|
||||
Ok(Section {
|
||||
id: id.0,
|
||||
unparsed: unparsed,
|
||||
|
Reference in New Issue
Block a user