aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_reader_writer.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-11-10 22:58:12 +0100
committerDavid Robillard <d@drobilla.net>2020-11-11 00:06:20 +0100
commit9eee20ada8974e53227fa77e8dc0013ceaca88a3 (patch)
tree4b5bedc0a6874c815baab376e1cb6bc22a489897 /test/test_reader_writer.c
parent48635c1e2ce5ac764cc273b4f2b93e361016d612 (diff)
downloadserd-9eee20ada8974e53227fa77e8dc0013ceaca88a3.tar.gz
serd-9eee20ada8974e53227fa77e8dc0013ceaca88a3.tar.bz2
serd-9eee20ada8974e53227fa77e8dc0013ceaca88a3.zip
Add nonnull and nullable attributes to API
This will warn if NULL is passed to any nonnull-annotated parameter, and is also supported by sanitizers which can check for violations at runtime. Unfortunately, it is currently only supported by clang. GCC has a similar feature in the nonnull attribute, but this has a different syntax (it's a function attribute) and is more dangerous since it is used by the optimizer to assume a null pointer is undefined behavior. This one just warns and still allows code to handle the situation gracefully, which I think is more appropriate for a library API. Note that this optimization behavior is not some unlikely edge case: switching these attributes to the GCC one will break release builds.
Diffstat (limited to 'test/test_reader_writer.c')
-rw-r--r--test/test_reader_writer.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/test_reader_writer.c b/test/test_reader_writer.c
index 60f8805f..41f57e77 100644
--- a/test/test_reader_writer.c
+++ b/test/test_reader_writer.c
@@ -286,7 +286,15 @@ test_reader(const char* path)
SerdNode g = serd_node_from_string(SERD_URI, USTR("http://example.org/"));
serd_reader_set_default_graph(reader, &g);
serd_reader_add_blank_prefix(reader, USTR("tmp"));
+
+#if defined(__GNUC__)
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wnonnull"
+#endif
serd_reader_add_blank_prefix(reader, NULL);
+#if defined(__GNUC__)
+# pragma GCC diagnostic pop
+#endif
assert(serd_reader_read_file(reader, USTR("http://notafile")));
assert(serd_reader_read_file(reader, USTR("file:///better/not/exist")));