From 13c766f651bd91b5fb9cf2a53fd31be4713a0a21 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 21 Jan 2009 17:02:11 +0000 Subject: [PATCH] fix wxURI::GetUser() for URIs without password; added unit test case for it (closes #10412) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@58272 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + src/common/uri.cpp | 19 ++++++++----------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 60ee92489c..f5da698990 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -101,6 +101,7 @@ All: - Corrected Serbian locale name (Cody Precord). - Fix wxURL::GetInputStream() for URLs with special characters in credentials (Robert Wruck). +- Fix wxURI::GetUser() for URIs without password. All (GUI): diff --git a/src/common/uri.cpp b/src/common/uri.cpp index ccc0149a4b..0de01d750b 100644 --- a/src/common/uri.cpp +++ b/src/common/uri.cpp @@ -159,22 +159,19 @@ bool wxURI::IsEscape(const wxChar*& uri) // --------------------------------------------------------------------------- wxString wxURI::GetUser() const { - size_t dwPasswordPos = m_userinfo.find(':'); - - if (dwPasswordPos == wxString::npos) - dwPasswordPos = 0; - - return m_userinfo(0, dwPasswordPos); + // if there is no colon at all, find() returns npos and this method returns + // the entire string which is correct as it means that password was omitted + return m_userinfo(0, m_userinfo.find(':')); } wxString wxURI::GetPassword() const { - size_t dwPasswordPos = m_userinfo.find(':'); + size_t posColon = m_userinfo.find(':'); - if (dwPasswordPos == wxString::npos) - return wxT(""); - else - return m_userinfo(dwPasswordPos+1, m_userinfo.length() + 1); + if ( posColon == wxString::npos ) + return ""; + + return m_userinfo(posColon + 1, wxString::npos); } // ---------------------------------------------------------------------------