diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/serdi.c | 18 | ||||
-rw-r--r-- | src/uri.c | 7 |
2 files changed, 7 insertions, 18 deletions
diff --git a/src/serdi.c b/src/serdi.c index 451905b8..467c3275 100644 --- a/src/serdi.c +++ b/src/serdi.c @@ -107,19 +107,13 @@ event_base(void* handle, return false; } - if (!base_uri.scheme.len) { // URI has no scheme, resolve relative URI - SerdURI abs_base_uri; - if (!serd_uri_resolve(&base_uri, &state->base_uri, &abs_base_uri)) { - fprintf(stderr, "error: failed to resolve new base URI\n"); - return false; - } - base_uri_node = serd_node_new_uri(&abs_base_uri, &base_uri); - } else { - SerdURI new_base_uri; - base_uri_node = serd_node_new_uri(&base_uri, &new_base_uri); - base_uri = new_base_uri; + SerdURI abs_base_uri; + if (!serd_uri_resolve(&base_uri, &state->base_uri, &abs_base_uri)) { + fprintf(stderr, "error: failed to resolve new base URI\n"); + return false; } - + base_uri_node = serd_node_new_uri(&abs_base_uri, &base_uri); + state->base_uri_node = base_uri_node; state->base_uri = base_uri; serd_writer_set_base_uri(state->writer, &base_uri); @@ -187,17 +187,12 @@ SERD_API bool serd_uri_resolve(const SerdURI* r, const SerdURI* base, SerdURI* t) { - assert(!r->scheme.len); // r is relative - // See http://tools.ietf.org/html/rfc3986#section-5.2.2 t->path_base.buf = NULL; t->path_base.len = 0; if (r->scheme.len) { - t->scheme = r->scheme; - t->authority = r->authority; - t->path = r->path; - t->query = r->query; + *t = *r; } else { if (r->authority.len) { t->authority = r->authority; |