@@ -477,7 +477,11 @@ namespace Exiv2 {
477477 io.seekOrThrow (offset, BasicIo::beg, kerCorruptedMetadata); // position
478478 io.readOrThrow (bytes, jump, kerCorruptedMetadata) ; // read
479479 bytes[jump]=0 ;
480- if ( ::strcmp (" Nikon" ,chars) == 0 ) {
480+
481+ bool bNikon = ::strcmp (" Nikon" ,chars) == 0 ;
482+ bool bSony = ::strcmp (" SONY DSC " ,chars) == 0 ;
483+
484+ if ( bNikon ) {
481485 // tag is an embedded tiff
482486 const long byteslen = count-jump;
483487 DataBuf bytes (byteslen); // allocate a buffer
@@ -486,8 +490,9 @@ namespace Exiv2 {
486490 printTiffStructure (memIo,out,option,depth);
487491 } else {
488492 // tag is an IFD
493+ uint32_t punt = bSony ? 12 : 0 ;
489494 io.seekOrThrow (0 , BasicIo::beg, kerCorruptedMetadata); // position
490- printIFDStructure (io,out,option,offset,bSwap,c,depth);
495+ printIFDStructure (io,out,option,offset+punt ,bSwap,c,depth);
491496 }
492497
493498 io.seekOrThrow (restore, BasicIo::beg, kerCorruptedMetadata); // restore
0 commit comments