summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-05-30 09:13:44 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-05-30 11:37:14 +0200
commit47bbe217607374ccd3a76f1ef6d82e43efd31ba1 (patch)
tree351df5ad5ec93e156804d9b6bb14665923fc9087
parent5ae5fb482f37176f1746cca4ade5c87b34b135a7 (diff)
untwist the logic in convertName2SQLName
Change-Id: Ib3cfa3a8a2bdc691e3f6db25672a37c8ede1ffd5 Reviewed-on: https://gerrit.libreoffice.org/38180 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--connectivity/source/commontools/CommonTools.cxx20
1 files changed, 9 insertions, 11 deletions
diff --git a/connectivity/source/commontools/CommonTools.cxx b/connectivity/source/commontools/CommonTools.cxx
index 3a9f237ce824..82e497b2e65b 100644
--- a/connectivity/source/commontools/CommonTools.cxx
+++ b/connectivity/source/commontools/CommonTools.cxx
@@ -211,21 +211,19 @@ OUString convertName2SQLName(const OUString& rName,const OUString& _rSpecials)
{
if(isValidSQLName(rName,_rSpecials))
return rName;
- OUString aNewName(rName);
+
const sal_Unicode* pStr = rName.getStr();
+ // if not valid
+ if (*pStr >= 128 || rtl::isAsciiDigit(*pStr))
+ return OUString();
+
+ OUStringBuffer aNewName(rName);
sal_Int32 nLength = rName.getLength();
- bool bValid(*pStr < 128 && !rtl::isAsciiDigit(*pStr));
- for (sal_Int32 i=0; bValid && i < nLength; ++pStr,++i )
+ for (sal_Int32 i=0; i < nLength; ++pStr,++i )
if(!isCharOk(*pStr,_rSpecials))
- {
- aNewName = aNewName.replace(*pStr,'_');
- pStr = aNewName.getStr() + i;
- }
-
- if ( !bValid )
- aNewName.clear();
+ aNewName[i] = '_';
- return aNewName;
+ return aNewName.makeStringAndClear();
}
OUString quoteName(const OUString& _rQuote, const OUString& _rName)