diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/dumper.c | 7 | ||||
-rw-r--r-- | src/loader.c | 21 |
2 files changed, 19 insertions, 9 deletions
diff --git a/src/dumper.c b/src/dumper.c index b577dff..49878d1 100644 --- a/src/dumper.c +++ b/src/dumper.c @@ -23,6 +23,7 @@ #include "lv2/urid/urid.h" #include "serd/serd.h" +#include <assert.h> #include <ctype.h> #include <stdbool.h> #include <stdint.h> @@ -30,6 +31,8 @@ #include <stdlib.h> #include <string.h> +// IWYU pragma: no_forward_declare SratomDumperImpl + #define NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#" #define NS_XSD "http://www.w3.org/2001/XMLSchema#" @@ -321,7 +324,8 @@ write_atom(StreamContext* const ctx, char* const str = (char*)calloc(len + 1, 1); for (uint32_t i = 0; i < size; ++i) { snprintf(str + (2 * i), - size * 2 + 1, + size - (2 * i), + /* 3, */ "%02X", (unsigned)*((const uint8_t*)body + i)); } @@ -457,6 +461,7 @@ write_atom(StreamContext* const ctx, if (object) { if (!subject || !predicate) { const SerdNode* const blank = serd_world_get_blank(writer->world); + assert(writer->nodes.rdf_first); serd_sink_write(sink, ctx->sflags | SERD_LIST_S | SERD_TERSE_S, blank, diff --git a/src/loader.c b/src/loader.c index e23e9c5..eead3a2 100644 --- a/src/loader.c +++ b/src/loader.c @@ -23,11 +23,14 @@ #include "serd/serd.h" #include <assert.h> +#include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> +// IWYU pragma: no_forward_declare SratomLoaderImpl + #define NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#" #define NS_XSD "http://www.w3.org/2001/XMLSchema#" @@ -289,14 +292,16 @@ read_plain_literal(SratomLoader* const loader, { static const char* const prefix = "http://lexvo.org/id/iso639-3/"; - const char* const str = serd_node_string(node); - const size_t len = serd_node_length(node); - const char* lang_str = serd_node_string(language); - const size_t prefix_len = strlen(prefix); - const size_t lang_len = prefix_len + strlen(lang_str); - char* const lang_uri = (char*)calloc(lang_len + 1, 1); + const char* const str = serd_node_string(node); + const size_t len = serd_node_length(node); + const char* lang_str = serd_node_string(language); + const size_t lang_str_len = serd_node_length(language); + const size_t prefix_len = strlen(prefix); + const size_t lang_uri_len = prefix_len + lang_str_len; + char* const lang_uri = (char*)calloc(lang_uri_len + 1, 1); - snprintf(lang_uri, lang_len + 1, "%s%s", prefix, lang_str); + memcpy(lang_uri, prefix, prefix_len); + memcpy(lang_uri + prefix_len, lang_str, lang_str_len); const LV2_Atom_Forge_Ref ref = lv2_atom_forge_literal( forge, str, len, 0, loader->map->map(loader->map->handle, lang_uri)); @@ -549,7 +554,7 @@ sratom_forge_sink(const LV2_Atom_Forge_Sink_Handle handle, const uint32_t size) { SerdBuffer* const chunk = (SerdBuffer*)handle; - const LV2_Atom_Forge_Ref ref = chunk->len + 1; + const LV2_Atom_Forge_Ref ref = (LV2_Atom_Forge_Ref)(chunk->len + 1); serd_buffer_write(buf, 1, size, chunk); return ref; |