diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-01-14 20:59:35 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-01-14 21:30:50 +0100 |
commit | 4c4ea76c78ceb0003d7049e1c6eb81c6999eba44 (patch) | |
tree | 8153e3aafbc819039c751fdc9ab86f0adda5f16d /connectivity | |
parent | 1ee02e390548267aa6eb5fdb06ea247c60a327d0 (diff) |
connectivity: dbase: global variable cleanup
(cherry picked from commit 88cceffc271e747be830675d62d24b6749a417f5)
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/source/drivers/dbase/dindexnode.cxx | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/connectivity/source/drivers/dbase/dindexnode.cxx b/connectivity/source/drivers/dbase/dindexnode.cxx index 0b67e1d5c66f..f4e527745a61 100644 --- a/connectivity/source/drivers/dbase/dindexnode.cxx +++ b/connectivity/source/drivers/dbase/dindexnode.cxx @@ -34,6 +34,7 @@ #include "diagnose_ex.h" #include <algorithm> +#include <boost/scoped_array.hpp> using namespace connectivity; @@ -683,8 +684,6 @@ void ONDXNode::Read(SvStream &rStream, ODbaseIndex& rIndex) rStream >> aChild; } -char aData[128]; - //------------------------------------------------------------------ void ONDXNode::Write(SvStream &rStream, const ONDXPage& rPage) const { @@ -696,24 +695,32 @@ void ONDXNode::Write(SvStream &rStream, const ONDXPage& rPage) const if (rIndex.getHeader().db_keytype) // double { + if (sizeof(double) != rIndex.getHeader().db_keylen) + { + OSL_TRACE("this key length cannot possibly be right?"); + } if (aKey.getValue().isNull()) { - memset(aData,0,rIndex.getHeader().db_keylen); - rStream.Write((sal_uInt8*)aData,rIndex.getHeader().db_keylen); + sal_uInt8 buf[sizeof(double)]; + memset(&buf[0], 0, sizeof(double)); + rStream.Write(&buf[0], sizeof(double)); } else rStream << (double) aKey.getValue(); } else { - memset(aData,0x20,rIndex.getHeader().db_keylen); + sal_uInt16 const nLen(rIndex.getHeader().db_keylen); + ::boost::scoped_array<sal_uInt8> pBuf(new sal_uInt8[nLen]); + memset(&pBuf[0], 0x20, nLen); if (!aKey.getValue().isNull()) { ::rtl::OUString sValue = aKey.getValue(); rtl::OString aText(rtl::OUStringToOString(sValue, rIndex.m_pTable->getConnection()->getTextEncoding())); - strncpy(aData, aText.getStr(), std::min<size_t>(rIndex.getHeader().db_keylen, aText.getLength())); + strncpy(reinterpret_cast<char *>(&pBuf[0]), aText.getStr(), + std::min<size_t>(nLen, aText.getLength())); } - rStream.Write((sal_uInt8*)aData,rIndex.getHeader().db_keylen); + rStream.Write(&pBuf[0], nLen); } rStream << aChild; } |