@@ -490,7 +490,11 @@ namespace Exiv2 {
490
490
seekOrThrow (io, offset, BasicIo::beg, kerCorruptedMetadata); // position
491
491
readOrThrow (io, bytes, jump, kerCorruptedMetadata) ; // read
492
492
bytes[jump]=0 ;
493
- if ( ::strcmp (" Nikon" ,chars) == 0 ) {
493
+
494
+ bool bNikon = ::strcmp (" Nikon" ,chars) == 0 ;
495
+ bool bSony = ::strcmp (" SONY DSC " ,chars) == 0 ;
496
+
497
+ if ( bNikon ) {
494
498
// tag is an embedded tiff
495
499
const long byteslen = count-jump;
496
500
DataBuf bytes (byteslen); // allocate a buffer
@@ -499,8 +503,9 @@ namespace Exiv2 {
499
503
printTiffStructure (memIo,out,option,depth);
500
504
} else {
501
505
// tag is an IFD
506
+ uint32_t punt = bSony ? 12 : 0 ;
502
507
seekOrThrow (io, 0 , BasicIo::beg, kerCorruptedMetadata); // position
503
- printIFDStructure (io,out,option,offset,bSwap,c,depth);
508
+ printIFDStructure (io,out,option,offset+punt ,bSwap,c,depth);
504
509
}
505
510
506
511
seekOrThrow (io, restore, BasicIo::beg, kerCorruptedMetadata); // restore
0 commit comments