tdf#125381: Manage URLs beginning with an "~" in cutPrefix (dbaccess/dsntypes)

On Windows or with other renderings than gtk3, the urls may begin with an ~
In this case, cutPrefix returns only empty string
When trying to access Index management for odb files related to dBase
indexes don't display because cutPrefix returns empty url
in dbaccess/source/ui/dlg/detailpages.cxx line 200

198         ::dbaccess::ODsnTypeCollection* pTypeCollection = pTypesItem ? pTypesItem->getCollection() : nullptr;
199         if (pTypeCollection && pUrlItem && pUrlItem->GetValue().getLength())
200             m_sDsn = pTypeCollection->cutPrefix(pUrlItem->GetValue());

Change-Id: I47360e205ddea7b060a31da697bbe9857ad3f4c0
Reviewed-on: https://gerrit.libreoffice.org/72568
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
diff --git a/dbaccess/source/core/misc/dsntypes.cxx b/dbaccess/source/core/misc/dsntypes.cxx
index 05e64ba..7332ccf 100644
--- a/dbaccess/source/core/misc/dsntypes.cxx
+++ b/dbaccess/source/core/misc/dsntypes.cxx
@@ -83,17 +83,20 @@
    OUString sRet;
    OUString sOldPattern;

    // on Windows or with gen rendering, the urls may begin with an ~
    const OUString& sCleanURL = comphelper::string::stripStart(_sURL, '~');

    for (auto const& dsnPrefix : m_aDsnPrefixes)
    {
        WildCard aWildCard(dsnPrefix);
        if ( sOldPattern.getLength() < dsnPrefix.getLength() && aWildCard.Matches(_sURL) )
        if ( sOldPattern.getLength() < dsnPrefix.getLength() && aWildCard.Matches(sCleanURL) )
        {
            // This relies on the fact that all patterns are of the form
            //   foo*
            // that is, the very concept of "prefix" applies.
            OUString prefix(comphelper::string::stripEnd(dsnPrefix, '*'));
            OSL_ENSURE(prefix.getLength() <= _sURL.getLength(), "How can A match B when A shorter than B?");
            sRet = _sURL.copy(prefix.getLength());
            OSL_ENSURE(prefix.getLength() <= sCleanURL.getLength(), "How can A match B when A shorter than B?");
            sRet = sCleanURL.copy(prefix.getLength());
            sOldPattern = dsnPrefix;
        }
    }