summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
Diffstat (limited to 'connectivity')
-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)