aboutsummaryrefslogtreecommitdiffstats
path: root/src/env.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-01-02 14:12:54 -0500
committerDavid Robillard <d@drobilla.net>2022-01-28 21:57:05 -0500
commit155fceabe7070b6610d577734734d038d097b088 (patch)
tree5bbbf327a00c2637f85f006c4b429ecc3b3cb1a3 /src/env.c
parent1159aea45d9bc4ade2e82856be403d58e050f32d (diff)
downloadserd-155fceabe7070b6610d577734734d038d097b088.tar.gz
serd-155fceabe7070b6610d577734734d038d097b088.tar.bz2
serd-155fceabe7070b6610d577734734d038d097b088.zip
Add assertions for all non-null pointers in the public API
Clang issues warnings at build time based on the SERD_NONNULL annotations, which is a much better approach in general. However, it does not cover cases where the API is being used with another compiler, or without a compiler that can statically check things at all (such as Python or other dynamic language bindings). In those situations, getting a clear assertion message is a lot less confusing than a random crash somewhere in serd, and it makes it clear that the bug is in the caller, so I think it's worth the tedious verbosity.
Diffstat (limited to 'src/env.c')
-rw-r--r--src/env.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/env.c b/src/env.c
index 66698c12..0fd603a9 100644
--- a/src/env.c
+++ b/src/env.c
@@ -130,6 +130,8 @@ serd_env_base_uri(const SerdEnv* const env)
SerdStatus
serd_env_set_base_uri(SerdEnv* const env, const SerdStringView uri)
{
+ assert(env);
+
if (!uri.len) {
serd_nodes_deref(env->nodes, env->base_uri_node);
env->base_uri_node = NULL;
@@ -195,6 +197,8 @@ serd_env_set_prefix(SerdEnv* const env,
const SerdStringView name,
const SerdStringView uri)
{
+ assert(env);
+
if (serd_uri_string_has_scheme(uri.buf)) {
// Set prefix to absolute URI
serd_env_add(env, name, serd_nodes_uri(env->nodes, uri));
@@ -327,6 +331,9 @@ serd_env_expand_node(const SerdEnv* const env, const SerdNode* const node)
void
serd_env_write_prefixes(const SerdEnv* const env, const SerdSink* const sink)
{
+ assert(env);
+ assert(sink);
+
for (size_t i = 0; i < env->n_prefixes; ++i) {
serd_sink_write_prefix(sink, env->prefixes[i].name, env->prefixes[i].uri);
}