forked from amazingfate/loongoffice
Opcode ocExternal is used for functions implemented as UNO calls, which has a number of problems: - ooo#118213-2 contains GETEOMONTH(), which maps to ocExternal, which calls AnalysisAddIn::getEomonth() in scaddins, which ends up calling ScModelObj::getPropertyValue(), which deadlocks on SolarMutex - it uses ScUnoAddInCollection class, which uses delayed initialization (even though it's created on-demand), which is not thread-safe; however, it seems that the initialization is generally done already while loading a file, so this is possibly in practice safe - who knows what all kinds of race conditions there are in all the functions this may call via UNO Change-Id: I80c4264102b8bc492853852c2c12e5cd2a8ea99e Reviewed-on: https://gerrit.libreoffice.org/55382 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins <ci@libreoffice.org>
Spreadsheet application code.
You can dump some information in a dbgutil build:
=== CTRL+SHIFT+F12 ===
Dumps the column width of the first 20 columns.
=== CTRL+SHIFT+F11 ===
Dumps the graphic objects and their position and size in pixel.
=== CTRL+SHIFT+F9 ===
Dumps the SfxItemSet representing the cell properties' of the
current selection as a xml file. The file will be named dump.xml
=== The Cache Format ===
ScDocument::StoreTabToCache allows storing the content (not the formatting)
of a table to a binary cache format.
The format is column orientated which allows quick serialization of the table.
Header:
* Number of Columns: 64 bit unsigned integer
Column:
* Column Index: 64 bit unsigned integer
* Column Size: 64 bit unsigned integer
* For each cell type block a new ColumnBlock
ColumnBlock:
* Start Row: 64 bit unsigned integer
* Block Size: 64 bit unsigned integer
* Type: 8 bit unsigned integer
- 0 : empty
- 1 : numeric
* for each cell: 64 bit IEEE 754 double precision value
- 2 : string
* for each cell: 32 bit signed string length followed by string length bytes of the string (UTF-8)
- 3 : formula
* for each cell: 32 bit signed string length followed by the formula in R1C1 notation as a string