aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2016-07-19 16:16:18 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2016-07-19 16:16:18 +0000
commit5989388cdfa7b757a9aab117f4dcabea147050a8 (patch)
treee4ee0d5c05e2de2cefd1981773a0be5e1d7da5a5 /gcc
parent985a47b29755eb080355712e98c76daeeccba659 (diff)
downloadgcc-5989388cdfa7b757a9aab117f4dcabea147050a8.zip
gcc-5989388cdfa7b757a9aab117f4dcabea147050a8.tar.gz
gcc-5989388cdfa7b757a9aab117f4dcabea147050a8.tar.bz2
selftest.c: gracefully handle NULL in assert_streq
gcc/ChangeLog: * selftest.c (selftest::assert_streq): Handle NULL values of val_actual and val_expected. From-SVN: r238479
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/selftest.c14
2 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c25a1d3..4d4cd9b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-07-19 David Malcolm <dmalcolm@redhat.com>
+
+ * selftest.c (selftest::assert_streq): Handle NULL values of
+ val_actual and val_expected.
+
2016-07-19 Martin Jambor <mjambor@suse.cz>
PR fortran/71688
diff --git a/gcc/selftest.c b/gcc/selftest.c
index ed6e517..76a4c41 100644
--- a/gcc/selftest.c
+++ b/gcc/selftest.c
@@ -60,13 +60,25 @@ selftest::fail_formatted (const location &loc, const char *fmt, ...)
abort ();
}
-/* Implementation detail of ASSERT_STREQ. */
+/* Implementation detail of ASSERT_STREQ.
+ Compare val_expected and val_actual with strcmp. They ought
+ to be non-NULL; fail gracefully if either are NULL. */
void
selftest::assert_streq (const location &loc,
const char *desc_expected, const char *desc_actual,
const char *val_expected, const char *val_actual)
{
+ /* If val_expected is NULL, the test is buggy. Fail gracefully. */
+ if (val_expected == NULL)
+ ::selftest::fail_formatted
+ (loc, "ASSERT_STREQ (%s, %s) expected=NULL",
+ desc_expected, desc_actual);
+ /* If val_actual is NULL, fail with a custom error message. */
+ if (val_actual == NULL)
+ ::selftest::fail_formatted
+ (loc, "ASSERT_STREQ (%s, %s) expected=\"%s\" actual=NULL",
+ desc_expected, desc_actual, val_expected);
if (0 == strcmp (val_expected, val_actual))
::selftest::pass (loc, "ASSERT_STREQ");
else