From 681ca375fd5af01501a91a78214ab7a26ad67ac7 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 9 Jul 2018 17:20:37 +0300 Subject: Make basic_url(string) ctor to consider empty string as invalid argument --- libbutl/url.mxx | 11 +++++------ libbutl/url.txx | 9 +++------ 2 files changed, 8 insertions(+), 12 deletions(-) (limited to 'libbutl') 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. // -- cgit v1.1