diff options
author | Richard Walters <rwalters@digitalstirling.com> | 2018-10-24 13:39:43 -0700 |
---|---|---|
committer | Richard Walters <rwalters@digitalstirling.com> | 2018-10-24 13:39:43 -0700 |
commit | c94c7f3f8eef94b381e6e0e30ab58e7290594193 (patch) | |
tree | 49f5387c73240b276615069d9bb8c067b36fdcf9 /src | |
parent | af0ecec183116e5feb4f8c9b4e963d05128479fa (diff) |
Uri: fix bugs in copying and comparing URIs with query/fragment parts
Copying query or fragment needs to copy the "hasQuery" and
"hasFragment" flags.
Comparing URIs should make use of "hasQuery" and "hasFragment" to
properly compare URIs that might not have query and/or fragment parts.
Diffstat (limited to 'src')
-rw-r--r-- | src/Uri.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/Uri.cpp b/src/Uri.cpp index fb9e1f8..4530595 100644 --- a/src/Uri.cpp +++ b/src/Uri.cpp @@ -1158,6 +1158,7 @@ namespace Uri { * This is the other URI from which to copy the query. */ void CopyQuery(const Uri& other) { + hasQuery = other.impl_->hasQuery; query = other.impl_->query; } @@ -1169,6 +1170,7 @@ namespace Uri { * This is the other URI from which to copy the query. */ void CopyFragment(const Uri& other) { + hasFragment = other.impl_->hasFragment; fragment = other.impl_->fragment; } @@ -1223,8 +1225,20 @@ namespace Uri { ) ) && (impl_->path == other.impl_->path) - && (impl_->query == other.impl_->query) - && (impl_->fragment == other.impl_->fragment) + && ( + (!impl_->hasQuery && !other.impl_->hasQuery) + || ( + (impl_->hasQuery && other.impl_->hasQuery) + && (impl_->query == other.impl_->query) + ) + ) + && ( + (!impl_->hasFragment && !other.impl_->hasFragment) + || ( + (impl_->hasFragment && other.impl_->hasFragment) + && (impl_->fragment == other.impl_->fragment) + ) + ) ); } |