summaryrefslogtreecommitdiff
path: root/connectivity/source/drivers/dbase/DTable.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'connectivity/source/drivers/dbase/DTable.cxx')
-rw-r--r--connectivity/source/drivers/dbase/DTable.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx
index 391a5edc05a8..b6ef20320f0c 100644
--- a/connectivity/source/drivers/dbase/DTable.cxx
+++ b/connectivity/source/drivers/dbase/DTable.cxx
@@ -323,8 +323,17 @@ void ODbaseTable::fillColumns()
for (; i < nFieldCount; i++)
{
DBFColumn aDBFColumn;
- sal_Size nRead = m_pFileStream->Read(&aDBFColumn, sizeof(aDBFColumn));
- if (nRead != sizeof(aDBFColumn))
+#if !defined(NDEBUG)
+ sal_uInt64 const nOldPos(m_pFileStream->Tell());
+#endif
+ m_pFileStream->Read(aDBFColumn.db_fnm, 11);
+ m_pFileStream->ReadUChar(aDBFColumn.db_typ);
+ m_pFileStream->ReadUInt32(aDBFColumn.db_adr);
+ m_pFileStream->ReadUChar(aDBFColumn.db_flng);
+ m_pFileStream->ReadUChar(aDBFColumn.db_dez);
+ m_pFileStream->Read(aDBFColumn.db_frei2, 14);
+ assert(m_pFileStream->GetError() || m_pFileStream->Tell() == nOldPos + sizeof(aDBFColumn));
+ if (m_pFileStream->GetError())
{
SAL_WARN("connectivity.drivers", "ODbaseTable::fillColumns: short read!");
break;