toeverything/AFFiNE · error · napi::Error
failed to preserve exif metadata
Error message
failed to preserve exif metadata
What it means
EXIF preservation path failed: encoding the retained metadata or muxing it into the WebP container (WebPMuxCreateInternal/mux add) failed, so keep_exif output could not be assembled; the error propagates from preserve_exif.
Source
Thrown at packages/backend/native/src/image.rs:218
metadata.remove_tag(ExifTag::Orientation(vec![1]));
if !metadata.get_ifds().iter().any(|ifd| !ifd.get_tags().is_empty()) {
return Ok(());
}
let encoded_metadata = metadata.encode().context("failed to preserve exif metadata")?;
let source = WebPData {
bytes: output.as_ptr(),
size: output.len(),
};
let exif = WebPData {
bytes: encoded_metadata.as_ptr(),
size: encoded_metadata.len(),
};
let mut assembled = WebPData::default();
let mux = unsafe { WebPMuxCreateInternal(&source, 1, WEBP_MUX_ABI_VERSION as _) };
if mux.is_null() {
bail!("failed to preserve exif metadata");
}
let encoded = (|| -> AnyResult<Vec<u8>> {
if unsafe { WebPMuxSetChunk(mux, c"EXIF".as_ptr(), &exif, 1) } != WebPMuxError::WEBP_MUX_OK {
bail!("failed to preserve exif metadata");
}
WebPDataInit(&mut assembled);
if unsafe { WebPMuxAssemble(mux, &mut assembled) } != WebPMuxError::WEBP_MUX_OK {
bail!("failed to preserve exif metadata");
}
Ok(unsafe { std::slice::from_raw_parts(assembled.bytes, assembled.size) }.to_vec())
})();
unsafe {
WebPDataClear(&mut assembled);View on GitHub (pinned to b4c8548c09)
Solutions
- Proceed without EXIF preservation or fix the metadata block.
- Strip malformed EXIF data and re-encode.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Raised when EXIF metadata re-encoding fails or when WebP mux operations (create, set EXIF chunk, assemble) fail while keep_exif is requested.
Common situations: Occurs when preserving EXIF from a source image into the WebP output fails. Retry without keep_exif or strip metadata from the source.
AI-assisted analysis of toeverything/AFFiNE@b4c8548c09 (2026-08-18).
Data as JSON: /api/errors/c2e2220da1d1e1c4.
Report an issue: GitHub.