aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/serdi.c18
-rw-r--r--src/uri.c7
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);
diff --git a/src/uri.c b/src/uri.c
index 3c62c01f..2b10718d 100644
--- a/src/uri.c
+++ b/src/uri.c
@@ -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;