You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.5 KiB
42 lines
1.5 KiB
From 1f1715c086d8dcdf5165b19164af9aee7aa12e98 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dan.cermak@cgc-instruments.com>
|
|
Date: Fri, 6 Oct 2017 00:37:43 +0200
|
|
Subject: =?UTF-8?q?Use=20nullptr=20check=20instead=20of=20assertion,=20by?=
|
|
=?UTF-8?q?=20Rapha=C3=ABl=20Hertzog?=
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Source:
|
|
https://github.com/Exiv2/exiv2/issues/57#issuecomment-333086302
|
|
|
|
tc can be a null pointer when the TIFF tag is unknown (the factory
|
|
then returns an auto_ptr(0)) => as this can happen for corrupted
|
|
files, an explicit check should be used because an assertion can be
|
|
turned of in release mode (with NDEBUG defined)
|
|
|
|
This also fixes #57
|
|
|
|
diff --git a/src/tiffvisitor.cpp b/src/tiffvisitor.cpp
|
|
index 74f8d078..4ab733d4 100644
|
|
--- a/src/tiffvisitor.cpp
|
|
+++ b/src/tiffvisitor.cpp
|
|
@@ -1294,11 +1294,12 @@ namespace Exiv2 {
|
|
}
|
|
uint16_t tag = getUShort(p, byteOrder());
|
|
TiffComponent::AutoPtr tc = TiffCreator::create(tag, object->group());
|
|
- // The assertion typically fails if a component is not configured in
|
|
- // the TIFF structure table
|
|
- assert(tc.get());
|
|
- tc->setStart(p);
|
|
- object->addChild(tc);
|
|
+ if (tc.get()) {
|
|
+ tc->setStart(p);
|
|
+ object->addChild(tc);
|
|
+ } else {
|
|
+ EXV_WARNING << "Unable to handle tag " << tag << ".\n";
|
|
+ }
|
|
p += 12;
|
|
}
|
|
|