From 1f1715c086d8dcdf5165b19164af9aee7aa12e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= 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; }