diff --git a/src/read/any.rs b/src/read/any.rs index deaa2d7a..0b4cd8a0 100644 --- a/src/read/any.rs +++ b/src/read/any.rs @@ -887,11 +887,11 @@ impl<'data, 'file, R: ReadRef<'data>> ObjectComdat<'data> for Comdat<'data, 'fil with_inner!(self.inner, ComdatInternal, |x| x.symbol()) } - fn name_bytes(&self) -> Result<&[u8]> { + fn name_bytes(&self) -> Result<&'data [u8]> { with_inner!(self.inner, ComdatInternal, |x| x.name_bytes()) } - fn name(&self) -> Result<&str> { + fn name(&self) -> Result<&'data str> { with_inner!(self.inner, ComdatInternal, |x| x.name()) } diff --git a/src/read/coff/comdat.rs b/src/read/coff/comdat.rs index 90c29be6..6378547a 100644 --- a/src/read/coff/comdat.rs +++ b/src/read/coff/comdat.rs @@ -131,13 +131,13 @@ impl<'data, 'file, R: ReadRef<'data>, Coff: CoffHeader> ObjectComdat<'data> } #[inline] - fn name_bytes(&self) -> Result<&[u8]> { + fn name_bytes(&self) -> Result<&'data [u8]> { // Find the name of first symbol referring to the section. self.symbol.name(self.file.common.symbols.strings()) } #[inline] - fn name(&self) -> Result<&str> { + fn name(&self) -> Result<&'data str> { let bytes = self.name_bytes()?; str::from_utf8(bytes) .ok() diff --git a/src/read/elf/comdat.rs b/src/read/elf/comdat.rs index 882d2536..e841522d 100644 --- a/src/read/elf/comdat.rs +++ b/src/read/elf/comdat.rs @@ -108,14 +108,14 @@ where SymbolIndex(self.section.sh_info(self.file.endian) as usize) } - fn name_bytes(&self) -> read::Result<&[u8]> { + fn name_bytes(&self) -> read::Result<&'data [u8]> { // FIXME: check sh_link let index = self.section.sh_info(self.file.endian) as usize; let symbol = self.file.symbols.symbol(index)?; symbol.name(self.file.endian, self.file.symbols.strings()) } - fn name(&self) -> read::Result<&str> { + fn name(&self) -> read::Result<&'data str> { let name = self.name_bytes()?; str::from_utf8(name) .ok() diff --git a/src/read/macho/file.rs b/src/read/macho/file.rs index 3408014f..3f72aff6 100644 --- a/src/read/macho/file.rs +++ b/src/read/macho/file.rs @@ -556,12 +556,12 @@ where } #[inline] - fn name_bytes(&self) -> Result<&[u8]> { + fn name_bytes(&self) -> Result<&'data [u8]> { unreachable!(); } #[inline] - fn name(&self) -> Result<&str> { + fn name(&self) -> Result<&'data str> { unreachable!(); } diff --git a/src/read/pe/file.rs b/src/read/pe/file.rs index 15628056..c93c5795 100644 --- a/src/read/pe/file.rs +++ b/src/read/pe/file.rs @@ -476,12 +476,12 @@ where } #[inline] - fn name_bytes(&self) -> Result<&[u8]> { + fn name_bytes(&self) -> Result<&'data [u8]> { unreachable!(); } #[inline] - fn name(&self) -> Result<&str> { + fn name(&self) -> Result<&'data str> { unreachable!(); } diff --git a/src/read/traits.rs b/src/read/traits.rs index 51daa594..9f77aa0d 100644 --- a/src/read/traits.rs +++ b/src/read/traits.rs @@ -437,12 +437,12 @@ pub trait ObjectComdat<'data>: read::private::Sealed { fn symbol(&self) -> SymbolIndex; /// Returns the name of the COMDAT section group. - fn name_bytes(&self) -> Result<&[u8]>; + fn name_bytes(&self) -> Result<&'data [u8]>; /// Returns the name of the COMDAT section group. /// /// Returns an error if the name is not UTF-8. - fn name(&self) -> Result<&str>; + fn name(&self) -> Result<&'data str>; /// Get the sections in this section group. fn sections(&self) -> Self::SectionIterator; diff --git a/src/read/wasm.rs b/src/read/wasm.rs index a1f5ef53..cdb2e429 100644 --- a/src/read/wasm.rs +++ b/src/read/wasm.rs @@ -772,12 +772,12 @@ impl<'data, 'file, R> ObjectComdat<'data> for WasmComdat<'data, 'file, R> { } #[inline] - fn name_bytes(&self) -> Result<&[u8]> { + fn name_bytes(&self) -> Result<&'data [u8]> { unreachable!(); } #[inline] - fn name(&self) -> Result<&str> { + fn name(&self) -> Result<&'data str> { unreachable!(); } diff --git a/src/read/xcoff/comdat.rs b/src/read/xcoff/comdat.rs index e513896a..142dd526 100644 --- a/src/read/xcoff/comdat.rs +++ b/src/read/xcoff/comdat.rs @@ -86,12 +86,12 @@ where } #[inline] - fn name_bytes(&self) -> Result<&[u8]> { + fn name_bytes(&self) -> Result<&'data [u8]> { unreachable!(); } #[inline] - fn name(&self) -> Result<&str> { + fn name(&self) -> Result<&'data str> { unreachable!(); }