5555namespace Exiv2 {
5656 using namespace Exiv2 ::Internal;
5757
58- // This static function is a temporary fix in v0.27. In the next version,
59- // it will be added as a method of BasicIo.
60- static void readOrThrow (BasicIo& iIo, byte* buf, long rcount, ErrorCode err) {
61- iIo.readOrThrow (buf, rcount, err);
62- }
63-
6458 WebPImage::WebPImage (BasicIo::UniquePtr io)
6559 : Image(ImageType::webp, mdNone, std::move(io))
6660 {
@@ -138,7 +132,7 @@ namespace Exiv2 {
138132 DataBuf chunkId (WEBP_TAG_SIZE+1 );
139133 chunkId.write_uint8 (WEBP_TAG_SIZE, ' \0 ' );
140134
141- readOrThrow (*io_, data, WEBP_TAG_SIZE * 3 , Exiv2::kerCorruptedMetadata);
135+ io_-> readOrThrow (data, WEBP_TAG_SIZE * 3 , Exiv2::kerCorruptedMetadata);
142136 uint64_t filesize = Exiv2::getULong (data + WEBP_TAG_SIZE, littleEndian);
143137
144138 /* Set up header */
@@ -178,19 +172,19 @@ namespace Exiv2 {
178172 case we have any exif or xmp data, also check
179173 for any chunks with alpha frame/layer set */
180174 while (!io_->eof () && static_cast <uint64_t >(io_->tell ()) < filesize) {
181- readOrThrow (*io_, chunkId.data (), WEBP_TAG_SIZE, Exiv2::kerCorruptedMetadata);
182- readOrThrow (*io_, size_buff, WEBP_TAG_SIZE, Exiv2::kerCorruptedMetadata);
175+ io_-> readOrThrow (chunkId.data (), WEBP_TAG_SIZE, Exiv2::kerCorruptedMetadata);
176+ io_-> readOrThrow (size_buff, WEBP_TAG_SIZE, Exiv2::kerCorruptedMetadata);
183177 const uint32_t size_u32 = Exiv2::getULong (size_buff, littleEndian);
184178
185179 // Check that `size_u32` is safe to cast to `long`.
186180 enforce (size_u32 <= static_cast <size_t >(std::numeric_limits<unsigned int >::max ()),
187181 Exiv2::kerCorruptedMetadata);
188182 const long size = static_cast <long >(size_u32);
189183 DataBuf payload (size);
190- readOrThrow (*io_, payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
184+ io_-> readOrThrow (payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
191185 if ( payload.size () % 2 ) {
192186 byte c = 0 ;
193- readOrThrow (*io_, &c, 1 , Exiv2::kerCorruptedMetadata);
187+ io_-> readOrThrow (&c, 1 , Exiv2::kerCorruptedMetadata);
194188 }
195189
196190 /* Chunk with information about features
@@ -315,8 +309,8 @@ namespace Exiv2 {
315309
316310 io_->seek (12 , BasicIo::beg);
317311 while (!io_->eof () && static_cast <uint64_t >(io_->tell ()) < filesize) {
318- readOrThrow (*io_, chunkId.data (), 4 , Exiv2::kerCorruptedMetadata);
319- readOrThrow (*io_, size_buff, 4 , Exiv2::kerCorruptedMetadata);
312+ io_-> readOrThrow (chunkId.data (), 4 , Exiv2::kerCorruptedMetadata);
313+ io_-> readOrThrow (size_buff, 4 , Exiv2::kerCorruptedMetadata);
320314
321315 const uint32_t size_u32 = Exiv2::getULong (size_buff, littleEndian);
322316
@@ -326,7 +320,7 @@ namespace Exiv2 {
326320 const long size = static_cast <long >(size_u32);
327321
328322 DataBuf payload (size);
329- readOrThrow (*io_, payload.data (), size, Exiv2::kerCorruptedMetadata);
323+ io_-> readOrThrow (payload.data (), size, Exiv2::kerCorruptedMetadata);
330324 if ( io_->tell () % 2 ) io_->seek (+1 ,BasicIo::cur); // skip pad
331325
332326 if (equalsWebPTag (chunkId, WEBP_CHUNK_HEADER_VP8X)) {
@@ -518,7 +512,7 @@ namespace Exiv2 {
518512 DataBuf chunkId (5 );
519513 chunkId.write_uint8 (4 , ' \0 ' );
520514
521- readOrThrow (*io_, data, WEBP_TAG_SIZE * 3 , Exiv2::kerCorruptedMetadata);
515+ io_-> readOrThrow (data, WEBP_TAG_SIZE * 3 , Exiv2::kerCorruptedMetadata);
522516
523517 const uint32_t filesize_u32 =
524518 Safe::add (Exiv2::getULong (data + WEBP_TAG_SIZE, littleEndian), 8U );
@@ -544,8 +538,8 @@ namespace Exiv2 {
544538
545539 chunkId.write_uint8 (4 , ' \0 ' );
546540 while (!io_->eof () && io_->tell () < filesize) {
547- readOrThrow (*io_, chunkId.data (), WEBP_TAG_SIZE, Exiv2::kerCorruptedMetadata);
548- readOrThrow (*io_, size_buff, WEBP_TAG_SIZE, Exiv2::kerCorruptedMetadata);
541+ io_-> readOrThrow (chunkId.data (), WEBP_TAG_SIZE, Exiv2::kerCorruptedMetadata);
542+ io_-> readOrThrow (size_buff, WEBP_TAG_SIZE, Exiv2::kerCorruptedMetadata);
549543
550544 const uint32_t size_u32 = Exiv2::getULong (size_buff, littleEndian);
551545
@@ -566,7 +560,7 @@ namespace Exiv2 {
566560 has_canvas_data = true ;
567561 byte size_buf[WEBP_TAG_SIZE];
568562
569- readOrThrow (*io_, payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
563+ io_-> readOrThrow (payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
570564
571565 // Fetch width
572566 memcpy (&size_buf, payload.c_data (4 ), 3 );
@@ -581,7 +575,7 @@ namespace Exiv2 {
581575 enforce (size >= 10 , Exiv2::kerCorruptedMetadata);
582576
583577 has_canvas_data = true ;
584- readOrThrow (*io_, payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
578+ io_-> readOrThrow (payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
585579 byte size_buf[WEBP_TAG_SIZE];
586580
587581 // Fetch width""
@@ -602,7 +596,7 @@ namespace Exiv2 {
602596 byte size_buf_w[2 ];
603597 byte size_buf_h[3 ];
604598
605- readOrThrow (*io_, payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
599+ io_-> readOrThrow (payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
606600
607601 // Fetch width
608602 memcpy (&size_buf_w, payload.c_data (1 ), 2 );
@@ -620,7 +614,7 @@ namespace Exiv2 {
620614 has_canvas_data = true ;
621615 byte size_buf[WEBP_TAG_SIZE];
622616
623- readOrThrow (*io_, payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
617+ io_-> readOrThrow (payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
624618
625619 // Fetch width
626620 memcpy (&size_buf, payload.c_data (6 ), 3 );
@@ -632,10 +626,10 @@ namespace Exiv2 {
632626 size_buf[3 ] = 0 ;
633627 pixelHeight_ = Exiv2::getULong (size_buf, littleEndian) + 1 ;
634628 } else if (equalsWebPTag (chunkId, WEBP_CHUNK_HEADER_ICCP)) {
635- readOrThrow (*io_, payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
629+ io_-> readOrThrow (payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
636630 this ->setIccProfile (std::move (payload));
637631 } else if (equalsWebPTag (chunkId, WEBP_CHUNK_HEADER_EXIF)) {
638- readOrThrow (*io_, payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
632+ io_-> readOrThrow (payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
639633
640634 byte size_buff2[2 ];
641635 // 4 meaningful bytes + 2 padding bytes
@@ -713,7 +707,7 @@ namespace Exiv2 {
713707 exifData_.clear ();
714708 }
715709 } else if (equalsWebPTag (chunkId, WEBP_CHUNK_HEADER_XMP)) {
716- readOrThrow (*io_, payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
710+ io_-> readOrThrow (payload.data (), payload.size (), Exiv2::kerCorruptedMetadata);
717711 xmpPacket_.assign (payload.c_str (), payload.size ());
718712 if (!xmpPacket_.empty () && XmpParser::decode (xmpData_, xmpPacket_)) {
719713#ifndef SUPPRESS_WARNINGS
@@ -756,9 +750,9 @@ namespace Exiv2 {
756750 byte webp[len];
757751 byte data[len];
758752 byte riff[len];
759- readOrThrow (iIo, riff, len, Exiv2::kerCorruptedMetadata);
760- readOrThrow (iIo, data, len, Exiv2::kerCorruptedMetadata);
761- readOrThrow (iIo, webp, len, Exiv2::kerCorruptedMetadata);
753+ iIo. readOrThrow (riff, len, Exiv2::kerCorruptedMetadata);
754+ iIo. readOrThrow (data, len, Exiv2::kerCorruptedMetadata);
755+ iIo. readOrThrow (webp, len, Exiv2::kerCorruptedMetadata);
762756 bool matched_riff = (memcmp (riff, RiffImageId, len) == 0 );
763757 bool matched_webp = (memcmp (webp, WebPImageId, len) == 0 );
764758 iIo.seek (-12 , BasicIo::cur);
0 commit comments