aboutsummaryrefslogtreecommitdiff
path: root/libbutl
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2018-07-09 17:20:37 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2018-07-09 17:20:37 +0300
commit681ca375fd5af01501a91a78214ab7a26ad67ac7 (patch)
treecdf464f5001ce891e1129e07fc97253c9b321cb5 /libbutl
parent726f4573a5d183a685e0a1032a3e247e3b47482e (diff)
Make basic_url(string) ctor to consider empty string as invalid argument
Diffstat (limited to 'libbutl')
-rw-r--r--libbutl/url.mxx11
-rw-r--r--libbutl/url.txx9
2 files changed, 8 insertions, 12 deletions
diff --git a/libbutl/url.mxx b/libbutl/url.mxx
index a81162c..c696eaa 100644
--- a/libbutl/url.mxx
+++ b/libbutl/url.mxx
@@ -254,12 +254,11 @@ LIBBUTL_MODEXPORT namespace butl
//
basic_url () = default;
- // Create the URL object from its string representation. If the argument is
- // empty, then create an empty object. Otherwise verify that the string is
- // compliant to the generic URL syntax. URL-decode and validate components
- // with common for all schemes syntax (scheme, host, port, path).
- // Throw std::invalid_argument if the passed string is not a valid URL
- // representation.
+ // Create the URL object from its string representation. Verify that the
+ // string is compliant to the generic URL syntax. URL-decode and validate
+ // components with common for all schemes syntax (scheme, host, port,
+ // path). Throw std::invalid_argument if the passed string is not a valid
+ // URL representation.
//
// Validation and URL-decoding of the scheme-specific components can be
// provided by a custom url_traits::translate_scheme() implementation.
diff --git a/libbutl/url.txx b/libbutl/url.txx
index 26bd60a..b520509 100644
--- a/libbutl/url.txx
+++ b/libbutl/url.txx
@@ -226,14 +226,11 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
using iterator = typename string_type::const_iterator;
- // Create an empty URL object for the empty argument. Note that the scheme
- // is default-constructed, and so may stay undefined in this case.
- //
- if (u.empty ())
- return;
-
try
{
+ if (u.empty ())
+ throw invalid_argument ("empty URL");
+
// At the end of a component parsing 'i' points to the next component
// start, and 'b' stays unchanged.
//