From 745105a4828ca7d82a626792012c379cdd82228a Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Sun, 6 Jul 2014 15:38:01 +0100 Subject: try and help scan-build out wrt cppunit asserts Change-Id: Id86607802415ad069aa88be98012a5c99f594218 --- .../0001-mark-the-fails-as-no-return.patch.1 | 54 ++++++++++++++++++++++ external/cppunit/UnpackedTarball_cppunit.mk | 1 + 2 files changed, 55 insertions(+) create mode 100644 external/cppunit/0001-mark-the-fails-as-no-return.patch.1 (limited to 'external/cppunit') diff --git a/external/cppunit/0001-mark-the-fails-as-no-return.patch.1 b/external/cppunit/0001-mark-the-fails-as-no-return.patch.1 new file mode 100644 index 000000000000..13961f9e3506 --- /dev/null +++ b/external/cppunit/0001-mark-the-fails-as-no-return.patch.1 @@ -0,0 +1,54 @@ +From 059fcd2878071616cedb5116a0b2f75b5edbdbe0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Sun, 6 Jul 2014 15:34:41 +0100 +Subject: [PATCH] mark the fails as no-return + +that might help clang scan-build understand that execution won't continue after +they fail +--- + include/cppunit/Asserter.h | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +diff --git a/include/cppunit/Asserter.h b/include/cppunit/Asserter.h +index 94dadaa..ad981b5 100644 +--- a/include/cppunit/Asserter.h ++++ b/include/cppunit/Asserter.h +@@ -42,17 +42,24 @@ class Message; + * CPPUNIT_SOURCELINE() ) + * \endcode + */ ++ ++#if defined __GNUC__ ++# define NORETURN __attribute__((noreturn)) ++#else ++# define NORETURN ++#endif ++ + struct Asserter + { + /*! \brief Throws a Exception with the specified message and location. + */ +- static void CPPUNIT_API fail( const Message &message, ++ NORETURN static void CPPUNIT_API fail( const Message &message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Throws a Exception with the specified message and location. + * \deprecated Use fail( Message, SourceLine ) instead. + */ +- static void CPPUNIT_API fail( std::string message, ++ NORETURN static void CPPUNIT_API fail( std::string message, + const SourceLine &sourceLine = SourceLine() ); + + /*! \brief Throws a Exception with the specified message and location. +@@ -111,7 +118,7 @@ struct Asserter + * what are the differences between the expected and actual value. + * \param shortDescription Short description for the failure message. + */ +- static void CPPUNIT_API failNotEqual( std::string expected, ++ NORETURN static void CPPUNIT_API failNotEqual( std::string expected, + std::string actual, + const SourceLine &sourceLine, + const AdditionalMessage &additionalMessage = AdditionalMessage(), +-- +1.9.3 + diff --git a/external/cppunit/UnpackedTarball_cppunit.mk b/external/cppunit/UnpackedTarball_cppunit.mk index fbae41b549a8..e2f9fa55d2d9 100644 --- a/external/cppunit/UnpackedTarball_cppunit.mk +++ b/external/cppunit/UnpackedTarball_cppunit.mk @@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cppunit,\ external/cppunit/wundef.patch \ external/cppunit/CPPUNIT_PLUGIN_EXPORT.patch.0 \ external/cppunit/enable-win32-debug.patch \ + external/cppunit/0001-mark-the-fails-as-no-return.patch.1 \ )) ifeq ($(DISABLE_DYNLOADING),TRUE) $(eval $(call gb_UnpackedTarball_add_patches,cppunit,\ -- cgit