diff options
Diffstat (limited to 'lib/Image/ExifTool/WriteQuickTime.pl')
-rw-r--r-- | lib/Image/ExifTool/WriteQuickTime.pl | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/Image/ExifTool/WriteQuickTime.pl b/lib/Image/ExifTool/WriteQuickTime.pl index 30875887..3a6c9a99 100644 --- a/lib/Image/ExifTool/WriteQuickTime.pl +++ b/lib/Image/ExifTool/WriteQuickTime.pl @@ -1089,7 +1089,9 @@ sub WriteQuickTime($$$) $$et{CHANGED} = $oldChanged if $$et{DemoteErrors} > 1; delete $$et{DemoteErrors}; } - if (defined $newData and not length $newData and $$tagTablePtr{PERMANENT}) { + if (defined $newData and not length $newData and ($$tagInfo{Permanent} or + ($$tagTablePtr{PERMANENT} and not defined $$tagInfo{Permanent}))) + { # do nothing if trying to delete tag from a PERMANENT table $$et{CHANGED} = $oldChanged; undef $newData; @@ -1097,7 +1099,9 @@ sub WriteQuickTime($$$) $$et{CUR_WRITE_GROUP} = $oldWriteGroup; SetByteOrder('MM'); # add back header if necessary - if ($start and defined $newData and length $newData) { + if ($start and defined $newData and (length $newData or + (defined $$tagInfo{Permanent} and not $$tagInfo{Permanent}))) + { $newData = substr($buff,0,$start) . $newData; $$_[1] += $start foreach @chunkOffset; } |