aboutsummaryrefslogtreecommitdiffstats
path: root/src/caret.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/caret.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/caret.c')
-rw-r--r--src/caret.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/caret.c b/src/caret.c
index 2fe92f94..b6911468 100644
--- a/src/caret.c
+++ b/src/caret.c
@@ -16,6 +16,7 @@
#include "caret.h"
+#include <assert.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
@@ -23,6 +24,8 @@
SerdCaret*
serd_caret_new(const SerdNode* name, unsigned line, unsigned col)
{
+ assert(name);
+
SerdCaret* caret = (SerdCaret*)malloc(sizeof(SerdCaret));
caret->file = name;
@@ -59,17 +62,21 @@ serd_caret_equals(const SerdCaret* l, const SerdCaret* r)
const SerdNode*
serd_caret_name(const SerdCaret* caret)
{
+ assert(caret);
+ assert(caret->file);
return caret->file;
}
unsigned
serd_caret_line(const SerdCaret* caret)
{
+ assert(caret);
return caret->line;
}
unsigned
serd_caret_column(const SerdCaret* caret)
{
+ assert(caret);
return caret->col;
}