exiftool_vendored 11.51.0 → 11.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 14d2ae1044ed8d62a0b4efcae5b775fb16db5f4c
4
- data.tar.gz: 9ff9933b519b5ad645b675891ea048cf077b0d36
3
+ metadata.gz: 708b8f54e7785c774043632d9e5dcefe98ae0a8d
4
+ data.tar.gz: 1d0693dcecc6c821a9ae9aab22427cd42d63ea8a
5
5
  SHA512:
6
- metadata.gz: a246e28c731ee0349cbf2782052eba51249f4df03dc623046f65250b258bed7179c3c179cb1dd64eddb0965f2518a2631c7cb492339ee54184cf66bd6df46542
7
- data.tar.gz: 923d024c05145f18099dfc1f8cf6bbd6ccb4cd839ccd7d7af2ff3497298f8aba17ee110adb9e1787ffd1c801b93e656b73d065efaa413c0a8db37b16231608a0
6
+ metadata.gz: 457d788e530ab3b621d414c6ad4c23bac4427b584886f5667cb1b3865dcd6ec77897a944a6b7ff5820e03e955826f37bd42c80269a75f30f47481ff5aec27ec4
7
+ data.tar.gz: dc5b34c896e756158c04c3ceb286746fe813fd2b0a1f37aca9faa517df5ce4706c53fc38e514647ed845d1bdbf519d2d2618087e8dcb6b84084ff0c82eba4e9e
data/bin/Changes CHANGED
@@ -7,6 +7,15 @@ RSS feed: http://owl.phy.queensu.ca/~phil/exiftool/rss.xml
7
7
  Note: The most recent production release is Version 11.50. (Other versions are
8
8
  considered development releases, and are not uploaded to CPAN.)
9
9
 
10
+ June 17, 2019 - Version 11.52
11
+
12
+ - Added a few new Nikon CropHiSpeed values (thanks Hayo Baan)
13
+ - Added a couple of new Nikon LensID's
14
+ - Fixed problem where processing large, corrupt AIFF files may could take an
15
+ excessively long time
16
+ - API Changes:
17
+ - Enhanced Compact option to add levels 3, 4 and 5
18
+
10
19
  June 13, 2019 - Version 11.51
11
20
 
12
21
  - Decode Canon DistortionCorrection tags
data/bin/META.json CHANGED
@@ -47,6 +47,6 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "11.51",
50
+ "version" : "11.52",
51
51
  "x_serialization_backend" : "JSON::PP version 4.02"
52
52
  }
data/bin/META.yml CHANGED
@@ -28,5 +28,5 @@ recommends:
28
28
  Time::HiRes: '0'
29
29
  requires:
30
30
  perl: '5.004'
31
- version: '11.51'
31
+ version: '11.52'
32
32
  x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
data/bin/README CHANGED
@@ -104,8 +104,8 @@ your home directory, then you would type the following commands in a
104
104
  terminal window to extract and run ExifTool:
105
105
 
106
106
  cd ~/Desktop
107
- gzip -dc Image-ExifTool-11.51.tar.gz | tar -xf -
108
- cd Image-ExifTool-11.51
107
+ gzip -dc Image-ExifTool-11.52.tar.gz | tar -xf -
108
+ cd Image-ExifTool-11.52
109
109
  ./exiftool t/images/ExifTool.jpg
110
110
 
111
111
  Note: These commands extract meta information from one of the test images.
data/bin/exiftool CHANGED
@@ -12,7 +12,7 @@
12
12
  use strict;
13
13
  require 5.004;
14
14
 
15
- my $version = '11.51';
15
+ my $version = '11.52';
16
16
 
17
17
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
18
18
  my $exeDir;
@@ -5119,7 +5119,7 @@ with this command:
5119
5119
 
5120
5120
  produces output like this:
5121
5121
 
5122
- -- Generated by ExifTool 11.51 --
5122
+ -- Generated by ExifTool 11.52 --
5123
5123
  File: a.jpg - 2003:10:31 15:44:19
5124
5124
  (f/5.6, 1/60s, ISO 100)
5125
5125
  File: b.jpg - 2006:05:23 11:57:38
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
27
27
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
28
28
  %jpegMarker %specialTags %fileTypeLookup);
29
29
 
30
- $VERSION = '11.51';
30
+ $VERSION = '11.52';
31
31
  $RELEASE = '';
32
32
  @ISA = qw(Exporter);
33
33
  %EXPORT_TAGS = (
@@ -2167,6 +2167,7 @@ sub ClearOptions($)
2167
2167
  WriteMode => 'wcg', # enable all write modes by default
2168
2168
  XAttrTags => undef, # extract MacOS extended attribute tags
2169
2169
  XMPAutoConv => 1, # automatic conversion of unknown XMP tag values
2170
+ XMPShorthand=> 0, # short form XMP
2170
2171
  };
2171
2172
  # keep necessary member variables in sync with options
2172
2173
  delete $$self{CUR_LANG};
@@ -529,12 +529,15 @@ without recoding. Default is 0.
529
529
 
530
530
  =item Compact
531
531
 
532
- Option to write compact XMP output. The XMP specification suggests that the
533
- data be padded with blanks to allow in-place editing. With this flag set to
534
- 1, the 2 kB of padding is not written. Note that this only effects embedded
535
- XMP since padding is never written for stand-alone XMP files. When set to
536
- 2, spaces to indent XMP for readability are also dropped. Default is undef.
537
- Also see the XMPShorthand option for reducing the size of XMP.
532
+ Option to write compact XMP output. The XMP specification recommends that
533
+ the XMP packet be padded with 2 kB of blanks to allow in-place editing. With
534
+ this option set to 1, the padding is not written. Note that this effects
535
+ only embedded XMP since padding is never written for stand-alone XMP files.
536
+ When set to 2, spaces to indent XMP for readability are also dropped. A
537
+ setting of 3 places all tags in a single rdf:Description element, and 4
538
+ removes newlines from between XMP elements. A setting of 5 also writes XMP
539
+ in shorthand format (to save setting the XMPShorthand option separately).
540
+ Default is undef.
538
541
 
539
542
  =item Composite
540
543
 
@@ -18,7 +18,7 @@ use vars qw($VERSION);
18
18
  use Image::ExifTool qw(:DataAccess :Utils);
19
19
  use Image::ExifTool::ID3;
20
20
 
21
- $VERSION = '1.09';
21
+ $VERSION = '1.10';
22
22
 
23
23
  # information for time/date-based tags (time zero is Jan 1, 1904)
24
24
  my %timeInfo = (
@@ -185,7 +185,7 @@ sub ProcessAIFF($$)
185
185
  {
186
186
  my ($et, $dirInfo) = @_;
187
187
  my $raf = $$dirInfo{RAF};
188
- my ($buff, $err, $tagTablePtr, $page, $type);
188
+ my ($buff, $err, $tagTablePtr, $page, $type, $n);
189
189
 
190
190
  # verify this is a valid AIFF file
191
191
  return 0 unless $raf->Read($buff, 12) == 12;
@@ -217,14 +217,24 @@ sub ProcessAIFF($$)
217
217
  #
218
218
  # Read through the IFF chunks
219
219
  #
220
- for (;;) {
220
+ for ($n=0;;++$n) {
221
221
  $raf->Read($buff, 8) == 8 or last;
222
222
  $pos += 8;
223
223
  my ($tag, $len) = unpack('a4N', $buff);
224
224
  my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
225
- $et->VPrint(0, "AIFF '${tag}' chunk ($len bytes of data):\n");
225
+ $et->VPrint(0, "AIFF '${tag}' chunk ($len bytes of data): ", $raf->Tell(),"\n");
226
226
  # AIFF chunks are padded to an even number of bytes
227
227
  my $len2 = $len + ($len & 0x01);
228
+ if ($len2 > 100000000) {
229
+ if ($len2 >= 0x80000000 and not $et->Options('LargeFileSupport')) {
230
+ $et->Warn('End of processing at large chunk (LargeFileSupport not enabled)');
231
+ last;
232
+ }
233
+ if ($tagInfo) {
234
+ $et->Warn("Skipping large $$tagInfo{Name} chunk (> 100 MB)");
235
+ undef $tagInfo;
236
+ }
237
+ }
228
238
  if ($tagInfo) {
229
239
  if ($$tagInfo{TypeOnly}) {
230
240
  $len = $len2 = 4;
@@ -241,6 +251,10 @@ sub ProcessAIFF($$)
241
251
  Start => 0,
242
252
  Size => $len,
243
253
  );
254
+ } elsif (not $len) {
255
+ next if ++$n < 100;
256
+ $et->Warn('Aborting scan. Too many empty chunks');
257
+ last;
244
258
  } elsif ($verbose > 2 and $len2 < 1024000) {
245
259
  $raf->Read($buff, $len2) == $len2 or $err = 1, last;
246
260
  $et->VerboseDump(\$buff);
@@ -248,6 +262,7 @@ sub ProcessAIFF($$)
248
262
  $raf->Seek($len2, 1) or $err=1, last;
249
263
  }
250
264
  $pos += $len2;
265
+ $n = 0;
251
266
  }
252
267
  $err and $et->Warn("Error reading $type file (corrupted?)");
253
268
  return 1;
@@ -798,7 +798,7 @@ sub ProcessMKV($$)
798
798
  # just skip unknown and large data blocks
799
799
  if (not $tagInfo or $more > 10000000) {
800
800
  # don't try to skip very large blocks unless LargeFileSupport is enabled
801
- last if $more > 0x80000000 and not $et->Options('LargeFileSupport');
801
+ last if $more >= 0x80000000 and not $et->Options('LargeFileSupport');
802
802
  $raf->Seek($more, 1) or last;
803
803
  $buff = '';
804
804
  $dataPos += $dataLen + $more;
@@ -46,6 +46,7 @@
46
46
  # 32) Stefan http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,4494.0.html
47
47
  # 34) Stewart Bennett private communication (D4S, D810)
48
48
  # 35) David Puschel private communication
49
+ # 36) Hayo Baann (forum10207)
49
50
  # IB) Iliah Borg private communication (LibRaw)
50
51
  # JD) Jens Duttke private communication
51
52
  # NJ) Niels Kristian Bech Jensen private communication
@@ -59,7 +60,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
59
60
  use Image::ExifTool::Exif;
60
61
  use Image::ExifTool::GPS;
61
62
 
62
- $VERSION = '3.64';
63
+ $VERSION = '3.65';
63
64
 
64
65
  sub LensIDConv($$$);
65
66
  sub ProcessNikonAVI($$$);
@@ -514,6 +515,7 @@ sub GetAFPointGrid($$;$);
514
515
  'E8 4C 44 44 14 14 DF 0E' => 'Tamron SP 35mm f/1.8 Di VC USD (F012)', #35
515
516
  'E7 4C 4C 4C 14 14 DF 0E' => 'Tamron SP 45mm f/1.8 Di VC USD (F013)',
516
517
  'F4 54 56 56 18 18 84 06' => 'Tamron SP AF 60mm f/2.0 Di II Macro 1:1 (G005)', #24
518
+ 'E5 4C 62 62 14 14 C9 4E' => 'Tamron SP 85mm f/1.8 Di VC USD (F016)', #30
517
519
  '1E 5D 64 64 20 20 13 00' => 'Tamron SP AF 90mm f/2.5 (52E)',
518
520
  '20 5A 64 64 20 20 14 00' => 'Tamron SP AF 90mm f/2.5 Macro (152E)',
519
521
  '22 53 64 64 24 24 E0 02' => 'Tamron SP AF 90mm f/2.8 Macro 1:1 (72E)',
@@ -572,6 +574,7 @@ sub GetAFPointGrid($$;$);
572
574
  'F7 53 5C 80 24 24 84 06' => 'Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)',
573
575
  'FE 53 5C 80 24 24 84 06' => 'Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)',
574
576
  'F7 53 5C 80 24 24 40 06' => 'Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)',
577
+ 'E2 47 5C 80 24 24 DF 4E' => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)', #30
575
578
  # 'FE 54 5C 80 24 24 DF 0E' => 'Tamron SP AF 70-200mm f/2.8 Di VC USD (A009)',
576
579
  'FE 54 5C 80 24 24 DF 0E' => 'Tamron SP 70-200mm f/2.8 Di VC USD (A009)', #NJ
577
580
  'E2 47 5C 80 24 24 DF 4E' => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)', #forum9549
@@ -938,13 +941,16 @@ my %afPoints153 = (
938
941
  my %cropHiSpeed = ( #IB
939
942
  0 => 'Off',
940
943
  1 => '1.3x Crop', # (1.3x Crop, Large)
941
- 2 => 'DX Crop',
944
+ 2 => 'DX Crop', # (1.5x)
942
945
  3 => '5:4 Crop',
943
- 4 => '3:2 Crop',
946
+ 4 => '3:2 Crop', # (1.2x, ref 36)
944
947
  6 => '16:9 Crop',
948
+ 8 => '2.7x Crop', #36 (D4/D500)
945
949
  9 => 'DX Movie Crop', # (DX during movie recording, Large)
950
+ 10 => '1.3x Movie Crop', #36 (D4/D500)
946
951
  11 => 'FX Uncropped',
947
952
  12 => 'DX Uncropped',
953
+ 15 => '1.5x Movie Crop', #36 (D4/D500)
948
954
  17 => '1:1 Crop',
949
955
  OTHER => sub {
950
956
  my ($val, $inv, $conv) = @_;
@@ -604,13 +604,13 @@ sub LimitXMPSize($$$$$$)
604
604
  push @$startPt, length($$dataPt); # add end offset to list
605
605
  my $newData = substr($$dataPt, 0, $$startPt[0]);
606
606
  my $guid = '0' x 32;
607
- my $sp = $noPad ? '' : ' ';
607
+ my ($sp, $nl) = $noPad ? ('', $noPad > 1 ? '' : "\n") : (' ',"\n");
608
608
  # write the required xmpNote:HasExtendedXMP property
609
- $newData .= "\n$sp<$rdfDesc rdf:about='${about}'\n$sp${sp}xmlns:xmpNote='$nsURI{xmpNote}'";
610
- if ($et->Options('XMPShorthand')) {
609
+ $newData .= "$nl$sp<$rdfDesc rdf:about='${about}'\n$sp${sp}xmlns:xmpNote='$nsURI{xmpNote}'";
610
+ if ($$et{OPTIONS}{XMPShorthand} or ($$et{OPTIONS}{Compact} and $$et{OPTIONS}{Compact} > 4)) {
611
611
  $newData .= "\n$sp${sp}xmpNote:HasExtendedXMP='${guid}'/>\n";
612
612
  } else {
613
- $newData .= ">\n$sp$sp<xmpNote:HasExtendedXMP>$guid</xmpNote:HasExtendedXMP>\n$sp</$rdfDesc>\n";
613
+ $newData .= ">$nl$sp$sp<xmpNote:HasExtendedXMP>$guid</xmpNote:HasExtendedXMP>$nl$sp</$rdfDesc>\n";
614
614
  }
615
615
 
616
616
  my ($i, %descSize, $start);
@@ -652,42 +652,49 @@ sub CloseProperty($$$$)
652
652
 
653
653
  my $prop = pop @$curPropList;
654
654
  $prop =~ s/ .*//; # remove list index if it exists
655
- my $pad = $noPad ? '' : ' ' x (scalar(@$curPropList) + 1);
655
+ my ($pad, $nl);
656
+ if ($noPad) {
657
+ $pad = '';
658
+ $nl = $noPad > 1 ? '' : "\n";
659
+ } else {
660
+ $pad = ' ' x (scalar(@$curPropList) + 1);
661
+ $nl = "\n";
662
+ }
656
663
  if ($$resFlag[@$curPropList]) {
657
664
  # close this XMP structure with possible shorthand properties
658
665
  if (length $$short[-1]) {
659
666
  if (length $$long[-1]) {
660
667
  # require a new Description if both longhand and shorthand properties
661
- $$long[-2] .= ">\n$pad<$rdfDesc";
662
- $$short[-1] .= ">\n";
663
- $$long[-1] .= "$pad</$rdfDesc>\n";
668
+ $$long[-2] .= ">$pad<$rdfDesc";
669
+ $$short[-1] .= ">$nl";
670
+ $$long[-1] .= "$pad</$rdfDesc>$nl";
664
671
  } else {
665
672
  # simply close empty property if all shorthand
666
- $$short[-1] .= "/>\n";
673
+ $$short[-1] .= "/>$nl";
667
674
  }
668
675
  } else {
669
676
  # use "parseType" instead of opening a new Description
670
677
  $$long[-2] .= ' rdf:parseType="Resource"';
671
- $$short[-1] = length $$long[-1] ? ">\n" : "/>\n";
678
+ $$short[-1] = length $$long[-1] ? ">$nl" : "/>$nl";
672
679
  }
673
- $$long[-1] .= "$pad</$prop>\n" if length $$long[-1];
680
+ $$long[-1] .= "$pad</$prop>$nl" if length $$long[-1];
674
681
  $$long[-2] .= $$short[-1] . $$long[-1];
675
682
  pop @$short;
676
683
  pop @$long;
677
684
  } elsif (defined $$resFlag[@$curPropList]) {
678
685
  # close this top level Description with possible shorthand values
679
686
  if (length $$long[-1]) {
680
- $$long[-2] .= $$short[-1] . ">\n" . $$long[-1] . "$pad</$prop>\n";
687
+ $$long[-2] .= $$short[-1] . ">$nl" . $$long[-1] . "$pad</$prop>$nl";
681
688
  } else {
682
- $$long[-2] .= $$short[-1] . "/>\n"; # empty element (ie. all shorthand)
689
+ $$long[-2] .= $$short[-1] . "/>$nl"; # empty element (ie. all shorthand)
683
690
  }
684
691
  $$short[-1] = $$long[-1] = '';
685
692
  } else {
686
693
  # close this property (no chance of shorthand)
687
- $$long[-1] .= "$pad</$prop>\n";
694
+ $$long[-1] .= "$pad</$prop>$nl";
688
695
  unless (@$curPropList) {
689
696
  # add properties now that this top-level Description is complete
690
- $$long[-2] .= ">\n" . $$long[-1];
697
+ $$long[-2] .= ">$nl" . $$long[-1];
691
698
  $$long[-1] = '';
692
699
  }
693
700
  }
@@ -715,11 +722,11 @@ sub WriteXMP($$;$)
715
722
  my $xmpFile = (not $tagTablePtr); # this is an XMP data file if no $tagTablePtr
716
723
  # prefer XMP over other metadata formats in some types of files
717
724
  my $preferred = $xmpFile || ($$et{PreferredGroup} and $$et{PreferredGroup} eq 'XMP');
718
- my $verbose = $et->Options('Verbose');
719
- my $compact = $et->Options('Compact') || 0;
725
+ my $verbose = $$et{OPTIONS}{Verbose};
726
+ my $compact = $$et{OPTIONS}{Compact} || 0;
720
727
  my $dirLen = $$dirInfo{DirLen};
721
728
  $dirLen = length($$dataPt) if not defined $dirLen and $dataPt;
722
- $noPad = ($compact > 1);
729
+ $noPad = $compact > 1 ? ($compact > 3 ? 2 : 1) : undef;
723
730
  #
724
731
  # extract existing XMP information into %capture hash
725
732
  #
@@ -1229,7 +1236,7 @@ sub WriteXMP($$;$)
1229
1236
  # write out the new XMP information (serialize it)
1230
1237
  #
1231
1238
  # start writing the XMP data
1232
- my $useShorthand = $et->Options('XMPShorthand');
1239
+ my $useShorthand = $$et{OPTIONS}{XMPShorthand} || $compact > 4;
1233
1240
  my (@long, @short, @resFlag);
1234
1241
  $long[0] = $long[1] = $short[0] = '';
1235
1242
  if ($$et{XMP_NO_XPACKET}) {
@@ -1272,6 +1279,8 @@ sub WriteXMP($$;$)
1272
1279
  }
1273
1280
  }
1274
1281
 
1282
+ my ($sp, $nl) = $noPad ? ('', $noPad > 1 ? '' : "\n") : (' ',"\n");
1283
+
1275
1284
  # write out all properties
1276
1285
  for (;;) {
1277
1286
  my (%nsNew, $newDesc);
@@ -1307,7 +1316,7 @@ sub WriteXMP($$;$)
1307
1316
  my ($path2, $ns2);
1308
1317
  foreach $path2 (@pathList) {
1309
1318
  my @ns2s = ($path2 =~ m{(?:^|/)([^/]+?):}g);
1310
- my $opening = 0;
1319
+ my $opening = $compact > 2 ? 1 : 0;
1311
1320
  foreach $ns2 (@ns2s) {
1312
1321
  next if $ns2 eq 'rdf';
1313
1322
  $nsNew{$ns2} and ++$opening, next;
@@ -1336,9 +1345,8 @@ sub WriteXMP($$;$)
1336
1345
  # open the new description
1337
1346
  $prop = $rdfDesc;
1338
1347
  %nsCur = %nsNew; # save current namespaces
1339
- my $sp = $noPad ? '' : ' ';
1340
1348
  my @ns = sort keys %nsCur;
1341
- $long[-2] .= "\n$sp<$prop rdf:about='${about}'";
1349
+ $long[-2] .= "$nl$sp<$prop rdf:about='${about}'";
1342
1350
  # generate et:toolkit attribute if this is an exiftool RDF/XML output file
1343
1351
  if (@ns and $nsCur{$ns[0]} =~ m{^http://ns.exiftool.ca/}) {
1344
1352
  $long[-2] .= "\n$sp${sp}xmlns:et='http://ns.exiftool.ca/1.0/'" .
@@ -1365,7 +1373,7 @@ sub WriteXMP($$;$)
1365
1373
  {
1366
1374
  # check for empty structure
1367
1375
  if ($propList[$n+1] =~ /:~dummy~$/) {
1368
- $long[-1] .= " rdf:parseType='Resource'/>\n";
1376
+ $long[-1] .= " rdf:parseType='Resource'/>$nl";
1369
1377
  pop @curPropList;
1370
1378
  $dummy = 1;
1371
1379
  last;
@@ -1376,10 +1384,10 @@ sub WriteXMP($$;$)
1376
1384
  push @short, '';
1377
1385
  } else {
1378
1386
  # use rdf:parseType='Resource' to avoid new 'rdf:Description'
1379
- $long[-1] .= " rdf:parseType='Resource'>\n";
1387
+ $long[-1] .= " rdf:parseType='Resource'>$nl";
1380
1388
  }
1381
1389
  } else {
1382
- $long[-1] .= ">\n"; # (will be no shorthand properties)
1390
+ $long[-1] .= ">$nl"; # (will be no shorthand properties)
1383
1391
  }
1384
1392
  }
1385
1393
  my $prop2 = pop @propList; # get new property name
@@ -1398,7 +1406,7 @@ sub WriteXMP($$;$)
1398
1406
  my $quot = ($attrVal =~ /'/) ? '"' : "'";
1399
1407
  $long[-1] .= " $attr=$quot$attrVal$quot";
1400
1408
  }
1401
- $long[-1] .= length $val ? ">$val</$prop2>\n" : "/>\n";
1409
+ $long[-1] .= length $val ? ">$val</$prop2>$nl" : "/>$nl";
1402
1410
  }
1403
1411
  }
1404
1412
  }
@@ -1415,9 +1423,9 @@ sub WriteXMP($$;$)
1415
1423
  $$dirInfo{ExtendedXMP} = $rtn[0];
1416
1424
  $$dirInfo{ExtendedGUID} = $rtn[1];
1417
1425
  # compact if necessary to fit
1418
- $compact = 1 if length($long[-2]) + 101 * $numPadLines > $maxDataLen;
1426
+ $compact = 1 if length($long[-2]) + 101 * $numPadLines > $maxDataLen and not $compact;
1419
1427
  }
1420
- $compact = 1 if $$dirInfo{Compact};
1428
+ $compact = 1 if $$dirInfo{Compact} and not $compact;
1421
1429
  #
1422
1430
  # close out the XMP, clean up, and return our data
1423
1431
  #
@@ -1439,7 +1447,7 @@ sub WriteXMP($$;$)
1439
1447
  # pad to specified DirLen
1440
1448
  if ($len > $dirLen) {
1441
1449
  my $str = 'Not enough room to edit XMP in place';
1442
- $str .= '. Try XMPShorthand option' unless $$et{OPTIONS}{XMPShorthand};
1450
+ $str .= '. Try XMPShorthand option' unless $$et{OPTIONS}{XMPShorthand} or $compact > 4;
1443
1451
  $et->Warn($str);
1444
1452
  return undef;
1445
1453
  }
@@ -282,7 +282,7 @@ sub ProcessRAR($$)
282
282
  last if $size < 0;
283
283
  next unless $size; # ignore blocks with no data
284
284
  # don't try to read very large blocks unless LargeFileSupport is enabled
285
- if ($size > 0x80000000 and not $et->Options('LargeFileSupport')) {
285
+ if ($size >= 0x80000000 and not $et->Options('LargeFileSupport')) {
286
286
  $et->Warn('Large block encountered. Aborting.');
287
287
  last;
288
288
  }
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 11.51
3
+ Version: 11.52
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('11.51.0')
4
+ VERSION = Gem::Version.new('11.52.0')
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exiftool_vendored
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.51.0
4
+ version: 11.52.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-06-13 00:00:00.000000000 Z
12
+ date: 2019-06-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool