tools/qa/cppunit/test_urlobj.cxx | 22 ++++++++++++++++++++++ tools/source/fsys/urlobj.cxx | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-)
New commits: commit ffcc71001927a862be0fdd9f27099b5468c7b37b Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri Jul 26 17:41:08 2013 +0200 fdo#33605: Handle http etc. URLs with no path but fragment Change-Id: I8c47cc55e7ad53e514c0bd46130cbbe6a1bb0357 (cherry picked from commit 44ddacb232c4fd5cbb28867aa28d7d855788a511) Reviewed-on: https://gerrit.libreoffice.org/5130 Reviewed-by: Eike Rathke <er...@redhat.com> Tested-by: Eike Rathke <er...@redhat.com> diff --git a/tools/qa/cppunit/test_urlobj.cxx b/tools/qa/cppunit/test_urlobj.cxx index 38120aa..07714ee 100644 --- a/tools/qa/cppunit/test_urlobj.cxx +++ b/tools/qa/cppunit/test_urlobj.cxx @@ -268,6 +268,27 @@ namespace tools_urlobj } } + void urlobjTest_emptyPath() { + { + INetURLObject url(OUString("http://example.com")); + CPPUNIT_ASSERT_EQUAL(INET_PROT_HTTP, url.GetProtocol()); + CPPUNIT_ASSERT_EQUAL(OUString("example.com"), url.GetHost()); + CPPUNIT_ASSERT_EQUAL(OUString("/"), url.GetURLPath()); + } + { + // This is an invalid http URL per RFC 2616: + INetURLObject url(OUString("http://example.com?query")); + CPPUNIT_ASSERT(url.HasError()); + } + { + INetURLObject url(OUString("http://example.com#fragment")); + CPPUNIT_ASSERT_EQUAL(INET_PROT_HTTP, url.GetProtocol()); + CPPUNIT_ASSERT_EQUAL(OUString("example.com"), url.GetHost()); + CPPUNIT_ASSERT_EQUAL(OUString("/"), url.GetURLPath()); + CPPUNIT_ASSERT_EQUAL(OUString("fragment"), url.GetMark()); + } + } + // Change the following lines only, if you add, remove or rename // member functions of the current class, // because these macros are need by auto register mechanism. @@ -280,6 +301,7 @@ namespace tools_urlobj CPPUNIT_TEST( urlobjTest_005 ); CPPUNIT_TEST( urlobjTest_006 ); CPPUNIT_TEST( urlobjCmisTest ); + CPPUNIT_TEST( urlobjTest_emptyPath ); CPPUNIT_TEST_SUITE_END( ); }; // class createPool diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx index f6e9db4..eecc4b4 100644 --- a/tools/source/fsys/urlobj.cxx +++ b/tools/source/fsys/urlobj.cxx @@ -2942,7 +2942,7 @@ bool INetURLObject::parsePath(INetProtocol eScheme, case INET_PROT_FTP: case INET_PROT_IMAP: - if (pPos < pEnd && *pPos != '/') + if (pPos < pEnd && *pPos != '/' && *pPos != nFragmentDelimiter) return false; while (pPos < pEnd && *pPos != nFragmentDelimiter) { @@ -2962,7 +2962,7 @@ bool INetURLObject::parsePath(INetProtocol eScheme, case INET_PROT_HTTPS: case INET_PROT_SMB: case INET_PROT_CMIS: - if (pPos < pEnd && *pPos != '/') + if (pPos < pEnd && *pPos != '/' && *pPos != nFragmentDelimiter) return false; while (pPos < pEnd && *pPos != nQueryDelimiter && *pPos != nFragmentDelimiter) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits