diff options
author | David Robillard <d@drobilla.net> | 2022-01-02 14:12:54 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-01-28 21:57:05 -0500 |
commit | 155fceabe7070b6610d577734734d038d097b088 (patch) | |
tree | 5bbbf327a00c2637f85f006c4b429ecc3b3cb1a3 /src/cursor.c | |
parent | 1159aea45d9bc4ade2e82856be403d58e050f32d (diff) | |
download | serd-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/cursor.c')
-rw-r--r-- | src/cursor.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cursor.c b/src/cursor.c index d57da866..4213476e 100644 --- a/src/cursor.c +++ b/src/cursor.c @@ -146,6 +146,8 @@ serd_cursor_copy(const SerdCursor* const cursor) const SerdStatement* serd_cursor_get(const SerdCursor* const cursor) { + assert(cursor); + return ((!zix_btree_iter_is_end(cursor->iter) && check_version(cursor)) ? (const SerdStatement*)zix_btree_get(cursor->iter) : NULL); @@ -182,6 +184,8 @@ serd_cursor_scan_next(SerdCursor* const cursor) SerdStatus serd_cursor_advance(SerdCursor* const cursor) { + assert(cursor); + if (zix_btree_iter_is_end(cursor->iter) || !check_version(cursor)) { return SERD_ERR_BAD_CURSOR; } |