connectivity/source/drivers/mork/MorkParser.cxx | 18 +++++++++++++++++- connectivity/source/drivers/mork/MorkParser.hxx | 2 ++ 2 files changed, 19 insertions(+), 1 deletion(-)
New commits: commit 312548329a90ed4bd903b1c87aa79d246f11ed04 Author: David Ostrovsky <[email protected]> Date: Tue Jul 31 23:41:36 2012 +0200 mork parser: fix table id straying rows Straying rows (rows that defined outside the table) belong to the default scope and to the table that was last seen. i. e. 1:^80 (at least i read the specification that way). In current implementation straing rows were always put in "dummy" table with id 0. By doing so the straying update rows were missing (they were assigned to the dummy table) and the data was wrong (outdated). Change-Id: Iea8edb3bf77c9d873f085bd312d2098ed4c9f69b diff --git a/connectivity/source/drivers/mork/MorkParser.cxx b/connectivity/source/drivers/mork/MorkParser.cxx index 7191149..b57fb94 100644 --- a/connectivity/source/drivers/mork/MorkParser.cxx +++ b/connectivity/source/drivers/mork/MorkParser.cxx @@ -58,6 +58,8 @@ MorkParser::MorkParser( int DefaultScope ) : morkPos_(0), nextAddValueId_(0x7fffffff), defaultScope_(DefaultScope), + defaultListScope_(0x81), + defaultTableId_(1), nowParsing_(NPValues) { } @@ -465,6 +467,20 @@ inline void MorkParser::setCurrentRow( int TableScope, int TableId, int RowScope TableScope = defaultScope_; } + // 01.08.2012 davido + // TableId 0 is wrong here. + // Straying rows (rows that defined outside the table) belong to the default scope and table is the last was seen: 1:^80 + // (at least i read so the specification) + if (TableId) + { + defaultTableId_ = TableId; + } + + if (!TableId) + { + TableId = defaultTableId_; + } + currentCells_ = &( mork_[ abs( TableScope ) ][ abs( TableId ) ][ abs( RowScope ) ][ abs( RowId ) ] ); } @@ -631,7 +647,7 @@ void MorkParser::dump() { std::cout << "\t Table:" << ( ( int ) TableIter->first < 0 ? "-" : " " ) - << std::hex << std::uppercase << "\r\n"; + << std::hex << std::uppercase << TableIter->first << std::endl; for (RowScopeMap::iterator RowScopeIter = TableIter->second.begin(); RowScopeIter != TableIter->second.end(); RowScopeIter++ ) diff --git a/connectivity/source/drivers/mork/MorkParser.hxx b/connectivity/source/drivers/mork/MorkParser.hxx index e92ad39..7654441 100644 --- a/connectivity/source/drivers/mork/MorkParser.hxx +++ b/connectivity/source/drivers/mork/MorkParser.hxx @@ -152,6 +152,8 @@ protected: // Data unsigned morkPos_; int nextAddValueId_; int defaultScope_; + int defaultListScope_; + int defaultTableId_; // Indicates intity is being parsed enum { NPColumns, NPValues, NPRows } nowParsing_; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
