- Remove location: export checked only the photo's own EXIF, so an
original HEIC whose GPS was in its thumbnail's EXIF or a second EXIF
item was copied out with it. lightcraft_meta::embeds_location reads
every HEIF EXIF and XMP item, and one it can't read counts as a
location; other formats are checked as before. The refusal offers DNG
only for raws (DNG export of a JPEG or HEIC fails).
- iloc is walked once for all candidate items instead of once per
candidate (a hostile 48 MB iloc with 64 items took over a second).
- EXIF tied to an image the primary is made from (dimg: iden, iovl,
tmap, grid inputs, followed with a seen-set) is the photo's; a pitm
naming no item counts as no primary.
- Full-box versions are read from the box's own payload.
- meta README lists HEIF in embedded and ISO/IEC 14496-12 and 23008-12
in its sources; target-app-parity no longer cites HEIC (#693) as a
file-exchange discount reason.
Tests, failing before: GPS in a thumbnail's EXIF, a second EXIF item or
an XMP item, and the unsure cases; a work bound counting iloc entries
walked; derived primaries and a missing pitm item; a HEIC original
refused under remove location; DNG offered only for raws.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>