diff options
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/source/commontools/CommonTools.cxx | 20 |
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) |