diff --git a/src/lib/WP6ContentListener.cpp b/src/lib/WP6ContentListener.cpp index 4f45a53..e92d099 100644 --- a/src/lib/WP6ContentListener.cpp +++ b/src/lib/WP6ContentListener.cpp @@ -1311,7 +1311,10 @@ void WP6ContentListener::defineTable(const unsigned char position, const unsigne m_ps->m_tableDefinition.m_columnsProperties.clear(); // pull a table definition off of our stack - m_parseState->m_currentTable = m_parseState->m_tableList[m_parseState->m_nextTableIndice++]; + auto index = m_parseState->m_nextTableIndice++; + if (index >= m_parseState->m_tableList.size()) + throw ParseException(); + m_parseState->m_currentTable = m_parseState->m_tableList[index]; if (!m_parseState->m_currentTable) throw ParseException(); m_parseState->m_currentTable->makeBordersConsistent(); diff --git a/src/lib/WPXTable.h b/src/lib/WPXTable.h index 0767de8..652e5d0 100644 --- a/src/lib/WPXTable.h +++ b/src/lib/WPXTable.h @@ -92,6 +92,10 @@ public: { m_tableList->push_back(table); } + size_t size() const + { + return m_tableList->size(); + } private: void release();