@@ -8,7 +8,6 @@ use std::{
8
8
use memmap2:: Mmap ;
9
9
use object:: read:: { File as BinaryFile , Object , ObjectSection } ;
10
10
use paths:: AbsPath ;
11
- use snap:: read:: FrameDecoder as SnapDecoder ;
12
11
13
12
#[ derive( Debug ) ]
14
13
#[ allow( dead_code) ]
@@ -123,9 +122,8 @@ pub fn read_version(dylib_path: &AbsPath) -> io::Result<String> {
123
122
let version = u32:: from_be_bytes ( [ dot_rustc[ 4 ] , dot_rustc[ 5 ] , dot_rustc[ 6 ] , dot_rustc[ 7 ] ] ) ;
124
123
// Last supported version is:
125
124
// https://github.com/rust-lang/rust/commit/b94cfefc860715fb2adf72a6955423d384c69318
126
- let ( snappy_portion, bytes_before_version) = match version {
127
- 5 | 6 => ( & dot_rustc[ 8 ..] , 13 ) ,
128
- 7 | 8 => {
125
+ let ( mut metadata_portion, bytes_before_version) = match version {
126
+ 8 => {
129
127
let len_bytes = & dot_rustc[ 8 ..12 ] ;
130
128
let data_len = u32:: from_be_bytes ( len_bytes. try_into ( ) . unwrap ( ) ) as usize ;
131
129
( & dot_rustc[ 12 ..data_len + 12 ] , 13 )
@@ -143,25 +141,18 @@ pub fn read_version(dylib_path: &AbsPath) -> io::Result<String> {
143
141
}
144
142
} ;
145
143
146
- let mut uncompressed: Box < dyn Read > = if & snappy_portion[ 0 ..4 ] == b"rust" {
147
- // Not compressed.
148
- Box :: new ( snappy_portion)
149
- } else {
150
- Box :: new ( SnapDecoder :: new ( snappy_portion) )
151
- } ;
152
-
153
144
// We're going to skip over the bytes before the version string, so basically:
154
145
// 8 bytes for [b'r',b'u',b's',b't',0,0,0,5]
155
146
// 4 or 8 bytes for [crate root bytes]
156
147
// 1 byte for length of version string
157
148
// so 13 or 17 bytes in total, and we should check the last of those bytes
158
149
// to know the length
159
150
let mut bytes = [ 0u8 ; 17 ] ;
160
- uncompressed . read_exact ( & mut bytes[ ..bytes_before_version] ) ?;
151
+ metadata_portion . read_exact ( & mut bytes[ ..bytes_before_version] ) ?;
161
152
let length = bytes[ bytes_before_version - 1 ] ;
162
153
163
154
let mut version_string_utf8 = vec ! [ 0u8 ; length as usize ] ;
164
- uncompressed . read_exact ( & mut version_string_utf8) ?;
155
+ metadata_portion . read_exact ( & mut version_string_utf8) ?;
165
156
let version_string = String :: from_utf8 ( version_string_utf8) ;
166
157
version_string. map_err ( |e| io:: Error :: new ( io:: ErrorKind :: InvalidData , e) )
167
158
}
0 commit comments