summaryrefslogtreecommitdiff
path: root/sc/source/core/tool
AgeCommit message (Collapse)AuthorFilesLines
2018-11-22Resolves: tdf#113898 create JumpMatrix for svExternalDoubleRef scalar valuesEike Rathke1-1/+10
Change-Id: I45d2a1e573a7e4923aaaf5b69f3c4b39215aacc2 Reviewed-on: https://gerrit.libreoffice.org/63778 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 266aab73a88ae5b62fcddaf383107d8e7edc51f2) Reviewed-on: https://gerrit.libreoffice.org/63797 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-11-17blacklist svMatrix for calc threaded calculationLuboš Luňák1-0/+1
If a formula contains a matrix, interpreting it will actually result in modifying it in some ways (e.g. ScInterpreter::PopRangeMatrix() calls SetErrorInterpreter() on the matrix). Testcase: rhbz#1645905 Change-Id: I63742449ba0e4e375d6e459dc7bccd7e6b62920e Reviewed-on: https://gerrit.libreoffice.org/63187 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins Reviewed-on: https://gerrit.libreoffice.org/63379 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-11-17blacklist svExternalName for calc threadingLuboš Luňák1-0/+1
It's the same like svExternal(Single|Double)Ref, there's a lot of thread-unsafe code involved. Change-Id: Ief8bbbd9393788c374215412ee5236ce6bb551fa Reviewed-on: https://gerrit.libreoffice.org/63176 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins (cherry picked from commit 3460e91ac853964015215ec75be7cf63361ca0e9) Reviewed-on: https://gerrit.libreoffice.org/63377 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-11-06tdf#115317 Fix empty url representationPaul Trojahn1-3/+3
ScTabEditEngine doesn't override CalcFieldValue, so the function in EditEngine returns a single space as representation. By inheriting from ScFieldEditEngine the representation is calculated correctly. Change-Id: I6f3be8bd2c3936acf9f3d082c25c080bd3cbee76 Reviewed-on: https://gerrit.libreoffice.org/62428 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com> Reviewed-on: https://gerrit.libreoffice.org/62967 Tested-by: Jenkins
2018-10-11Resolves: tdf#73081 empty <> not-empty is also a match if numericEike Rathke1-3/+3
This simplifies to match empty for the same conditions whether numeric or not, an empty string does not result in numeric 0 here. Change-Id: I923a3e1f07dd2691d3ac720fc28ba76986fe6c3d Reviewed-on: https://gerrit.libreoffice.org/61486 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 9d8c89d9044edb5ad5c8bc4a8f0fd5868192714e) Reviewed-on: https://gerrit.libreoffice.org/61495 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-10-08tdf#119904 : Generalize the fix for tdf#115093Dennis Francis1-13/+30
The point is, if one of the FormulaTokens in the formula is returned as the "result" FormulaToken, then we should not reuse that same FormulaToken for each formula-cell in the group. If we do, then we end up with whole group/batch having the same result. Also adds a unit test specific to this bug. This issue is non existent in master because "SoftwareInterpreter" and related code were removed from master long after branch-off to 6.1. Change-Id: I10265211b5f14c82ed385401aa3fb838c492872d Reviewed-on: https://gerrit.libreoffice.org/61362 Tested-by: Jenkins Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2018-09-26Resolves: tdf#119954 do not copy the old parent, init with new parent insteadEike Rathke1-3/+3
The parent is always the ScDBCollection that contains the ScDBCollection::NamedDBs container, not the one the ScDBCollection::NamedDBs was copy-constructed from. Change-Id: Ia409347f3aeb9ad7a5e68da7af727adfac98d6a2 Reviewed-on: https://gerrit.libreoffice.org/60833 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 7ea5d339dc4d8412f436f3affa589bfbd0b1ef68) Reviewed-on: https://gerrit.libreoffice.org/60841 Tested-by: Eike Rathke <erack@redhat.com> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2018-09-17SOSAW080: Derive SdrObjGroup from SdrObjListArmin Le Grand3-14/+14
Also simplify parent/child relationships, get rid of double data (SdrPage/Parent infos in SdrObjects, also in SdrObjList). This is all not needed - when a SdrObject is inserted to a SdrPage, get SdrPage by traveling over parents (no double info, member as soon as inserted, ...). More cleanups/reworks included, will need some more cleanups, too. Stabilizing: SetRectsDirty/DefaultStyleSheet Had to correct the SetRectsDirty stuff for 3D due to going down the hierarchy while the 2D implementation goes the other direction -> endless loops. Added special handling for 3D stuff for now (will be chnaged again when SnapRect is no longer needed at SdrObject level). Also had to adapt how the DefaultStyleSheet is set at incarnated SdrObjects - better: their properties. Since we now always have a SdrModel, it is possible to correctly initialize with the correct default StyleSheet from that SdrModel. This needs to be done after ForceDefaultAttributes and in a way that again deletes Items that are set in the StyleSheet. This leads to an error in CppunitTest_sd_import_tests where I checked tdf100491 - it is okay and thus I change the control instance of the imported, XML-dumped file. The less hard attributes, the better for Styles in general. Cleanup of comments for last two commits Corrected SvxShape::getParent() Needed to get the direct parent, so test for SdrObject first (to get SdrObjGroup/E3DScene), for SdrPage second Fixed CppunitTest_sc_subsequent_export_test Several problems arose. The used SdrCaptionObj was Cloned, but the clone not inserted to a SdrPage. This leads to not being able to access a UNO API imlementation of the SdrPage (SvxPage) on lower levels. It worked before due to SdrObject having a SdrPage* additionally to being added to a SdrPage - this is exactly the main cleanup this change does. Looked for why it is cloned, could see no reasons. The SdrCaptionObj exists during all im/export, not difference to other SdrObjects (that do not get cloned). It is not changed in any way. It *might* be to suppress a crash that happened due to UNO API Service emfio/emfio not being available in the UnitTest scenario. Interestingly it did not crash with the cloned SdrCaptionObj, but the Graphic exported was probably wrong. Fixed by no longer Cloning the SdrCaptionObj and adding emfio/emfio UNO API Service. d139f821a5b39535a3e7b9c6261df7e18f8ae8ac 910e7f4bc628a715fda7545dffaf3369d5e76ea0 ca1de01b723051e09ac37d7ec7bba978beea41c5 3a76da1471dfe75e69847f64a6a3519ad21c8c9c Change-Id: I986586e326b563acebf00d931a7084c6eb09e5f8 Reviewed-on: https://gerrit.libreoffice.org/54689 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de> Reviewed-on: https://gerrit.libreoffice.org/60535 Tested-by: Jenkins
2018-09-12sync opcodes blacklisted for calc threading from masterLuboš Luňák1-0/+12
This makes the branch use the same blacklist, i.e. commits 4aecbe996349c7767ba3fb1e81db2ef6f94d39ba and fbd79a36ca8110e37434bb2eb5cc83e892710392. Change-Id: I85ae8e79ee5285f26a5594ad2fddd4a37284afd0 Reviewed-on: https://gerrit.libreoffice.org/60254 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins
2018-09-04Resolves: tdf#119533 reintroduce time rounding but cut, tdf#118800 follow-upEike Rathke1-12/+50
This is a combination of 2 commits. Resolves: tdf#119533 reintroduce time rounding but cut, tdf#118800 follow-up Regression from commit c69e7266916ac1b8917477fb4eccdb9098da5792 CommitDate: Thu Jul 19 14:01:30 2018 +0200 tdf#118800 fix rounding error in Calc function HOUR, MINUTE, SECOND. Rounding was only an error if it produced a value of a full day in seconds, or if it otherwise led to an inappropriately rounded-up individual value, but in general some rounding is necessary. Instead of omitting rounding completely, basically round to nanoseconds and then do not round individual hour,minute,second values but instead truncate to the next magnitude so 23:59:59.9999 gives 23h59m59s instead of 24h0m0s Reviewed-on: https://gerrit.libreoffice.org/59677 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 273b3e10eab70ebc084cb62568bd699fddfb376e) Shortcut small negative values to 0:0:0, tdf#119533 tdf#118800 follow-up ... instead of letting them end up as 24:0:0 Reviewed-on: https://gerrit.libreoffice.org/59699 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com> (cherry picked from commit 98cb91686901dc0133c5c23dc5658d9623dbd436) 0212a2b422a931a24fd2748aa2826a5b60d2a397 Change-Id: I93df1aa54212c1b8816237c9467f270ed28a3f1f Reviewed-on: https://gerrit.libreoffice.org/59678 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-09-04Increase arbitrary sort elements limit from 100000 to two full columnsEike Rathke1-1/+3
The value 100000 already was in the year 2000 initial commit, probably some memory and performance constraints back then. At least one full column should be sortable, make it two so we don't bail out that early for functions like MODE() that can take multiple ranges. In fact maybe ScMatrix::IsSizeAllocatable() should be taken into account, which is much larger though and QuickSort() might not play well with it. Change-Id: I061abfd0f061c8df62c31468df744eb5dc7152be Reviewed-on: https://gerrit.libreoffice.org/59637 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com> (cherry picked from commit e8cb36fd6234270c8c31147db35cccab9c234529) Reviewed-on: https://gerrit.libreoffice.org/59660 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-08-31tdf#73078 Let 'Type()' return '1' for empty cellsMichael Weghorn1-0/+4
Quote from tdf#73078: > The function TYPE is specified with the Syntax: > TYPE( Any value ) and the rule "If a Reference > is provided, the reference is first dereferenced, > and any formulas are evaluated." > [ODF1.2 part2 section 6.13.33 TYP] > > Because of argument type "Any" the function cannot result > in an error. Gnumeric, Apache OpenOffice, and Excel return > the number 1 in this case. Therefore, have LibreOffice return 1 as well, rather than having an "Err:502" ("Error: Invalid argument"). Change-Id: I1e679645e7b2e70e185574f805cd410b0508cbd8 Reviewed-on: https://gerrit.libreoffice.org/59826 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com> (cherry picked from commit 0383ccd4e7116c3d26edc1f86b7a74fe3cf649bd) Reviewed-on: https://gerrit.libreoffice.org/59852 Tested-by: Eike Rathke <erack@redhat.com>
2018-08-23Resolves: tdf#119034 do not floor() for Logical A1Eike Rathke1-1/+1
Either it is 0.0 or it is not. Change-Id: I8e170e08b7a26ade65ca3b8db26a2d8c581e444c Reviewed-on: https://gerrit.libreoffice.org/59057 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 0815f3460fa8a595a085d853e96ffffb8ec0471f) Reviewed-on: https://gerrit.libreoffice.org/59494 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-08-22Resolves: tdf#118983 do not expand range if sheet references not affectedEike Rathke1-8/+5
Change-Id: Ib207d3723ce1d370a953e652957aaed399affc9c Reviewed-on: https://gerrit.libreoffice.org/59255 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com> (cherry picked from commit da0dc858fc05e7f1d6a60ca61f722044e688d4f8) Reviewed-on: https://gerrit.libreoffice.org/59271 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-08-22Resolves: tdf#119137 treat scalar non-reference non-array argument as matrixEike Rathke1-0/+16
... of size 1x1 so all further checks are applicable as for any other array. Change-Id: I0c8926bc56f5e451ca4847e0f0c76a1be97418f2 Reviewed-on: https://gerrit.libreoffice.org/59317 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com> (cherry picked from commit 7d785183dda20942459616110bab041f9293a399) Reviewed-on: https://gerrit.libreoffice.org/59329 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-07-27Related: tdf#91502 handle FORMULA() pCur->IsInForceArray() as wellEike Rathke1-1/+1
... so using it in SUMPRODUCT() and other ForceArray context works as expected. Change-Id: I60197301edcd2c24f8cb0c5fcf4dc4699d9a6165 Reviewed-on: https://gerrit.libreoffice.org/58118 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 2008a520e429bc2581001d61b63ff934c2255be0) Reviewed-on: https://gerrit.libreoffice.org/58175 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2018-07-27Resolves: tdf#91502 handle ISFORMULA() in array contextEike Rathke2-0/+47
Obtaining the usual matrix for iterated scalar values doesn't work here because we don't want the formulas' results but whether there are formulas at the referenced positions. Change-Id: I7912f9019d21b803ca327cb022df2014d3cc5c5a Reviewed-on: https://gerrit.libreoffice.org/58115 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit a44d1b8d47e0ef6645c7c5def1fe5d34d470ae0b) Reviewed-on: https://gerrit.libreoffice.org/58174 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2018-07-19tdf#118800 fix rounding error in Calc function HOUR, MINUTE, SECOND.Winfried Donkers1-3/+3
Change-Id: I7a875b172493112b66fca8f70d2061371a05486c Reviewed-on: https://gerrit.libreoffice.org/57721 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com> (cherry picked from commit c69e7266916ac1b8917477fb4eccdb9098da5792) Reviewed-on: https://gerrit.libreoffice.org/57728
2018-07-19Resolves: tdf#94925 proper recalc mode and dirty broadcast for OOXML importEike Rathke3-12/+5
This is a combination of 4 commits. Rework FormulaTokenArray ScRecalcMode in preparation for tdf#94925 Strictly order the exclusive bits by priority, let AddRecalcMode() handle all sets except forced ALWAYS or NORMAL. Introduce ONLOAD_LENIENT and ONLOAD_MUST splitting ONLOAD to be able to distinguish later during OOXML import. Reviewed-on: https://gerrit.libreoffice.org/57402 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins Resolves: tdf#94925 do not unset dirty if formula cell must be recalculated Reviewed-on: https://gerrit.libreoffice.org/57404 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins Broadcast formula cells marked for recalc, tdf#94925 related In fact the ScDocument::CalcFormulaTree() call in WorkbookFragment::recalcFormulaCells() never did anything because no formula cell was added to the tree. Only visible dirty cells were recalculated, but not their dependents. Reviewed-on: https://gerrit.libreoffice.org/57431 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins Remove the check for IsRecalcModeMustAfterImport(), tdf#94925 follow-up It's now superfluous as we set those cells dirty and broadcast in ScDocumentImport::broadcastRecalcAfterImport() Reviewed-on: https://gerrit.libreoffice.org/57439 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com> f70860b8babf1cce7fda2ae63412659e72dbb4c3 a9dd4ad16c20b23ee8a1d46b69a4702b1ad4c81f 188de2d53a2d54df32d24eeeb148c4f9e87e7cfc Change-Id: I11217fa19adb766f509d0d6854502112de547c59 Reviewed-on: https://gerrit.libreoffice.org/57438 Tested-by: Jenkins Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2018-07-19Related: tdf#117016 DoubleRefToVars: always put in orderEike Rathke1-0/+6
... as all callers expect, whatever dynamic range creating process may have created it. Change-Id: I47b2e174d5bf4d5c23f10685526b48eee07dd6a4 Reviewed-on: https://gerrit.libreoffice.org/57567 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 6db5e1bdd67531fab14b375d6c624237d38de297) Reviewed-on: https://gerrit.libreoffice.org/57621 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2018-07-13Resolves: tdf#118624 let RAND() in array/matrix mode fill a matrixEike Rathke1-1/+33
... instead of only top left that is referenced for other elements. Change-Id: I718946d7e4327b152e2d9f80712395fd7ab67dee Reviewed-on: https://gerrit.libreoffice.org/57235 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com> (cherry picked from commit 8afccbd129ecda81ff00dd2c6e5e10af254ae0ef) Reviewed-on: https://gerrit.libreoffice.org/57247 Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2018-07-08Resolves: tdf#118561 handle external references as jump matrix resultEike Rathke1-1/+35
Change-Id: I0381179347960293f5d470ed231d626cb6707b5a Reviewed-on: https://gerrit.libreoffice.org/57144 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit a5b9bb7be70c7aec2388199e68a0cf86dd220955) Reviewed-on: https://gerrit.libreoffice.org/57147
2018-07-04sc: replace ScCaptionPtr with std::shared_ptr, tdf#117997, tdf#117228Henry Castro1-1/+1
Change-Id: I9b6a2c2504c9ce060906ac3bf156721709fef2f3 Reviewed-on: https://gerrit.libreoffice.org/55490 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com> Reviewed-on: https://gerrit.libreoffice.org/56651 Tested-by: Eike Rathke <erack@redhat.com>
2018-07-04use ScInterpreterContext in ScMin()Luboš Luňák1-0/+2
Otherwise fdo#74583-1 asserts with calc's threading. Change-Id: I2ba46a15d1d5216b279ae21d92ae52353e470df6 Reviewed-on: https://gerrit.libreoffice.org/56479 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit ceabe204a7547988df8851e5d807ec83105e190c) Reviewed-on: https://gerrit.libreoffice.org/56515
2018-07-04use optional ScInterpreterContext in ScColumn::GetString()Luboš Luňák1-2/+6
Otherwise calc's threading asserts with fdo#37765-1. Change-Id: Ic2500f2218bf62c4d05f1c5284e62a53c0598b53 Reviewed-on: https://gerrit.libreoffice.org/56484 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit 4d37e0d5dd22343a3b7942649f460db544ae536c) Reviewed-on: https://gerrit.libreoffice.org/56516
2018-07-03blacklist ocGetPivotData for calc's threadingLuboš Luňák1-1/+2
There appears to be a lot of caching involved in the code invoked by ScGetPivotData(). Testcase is e.g. tdf#89186-1 (with minimal formula size disabled again). Change-Id: If7e2a972898c358dc8f80cf238f8d5ccf541f16d Reviewed-on: https://gerrit.libreoffice.org/56525 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit 7e1cabd96526cb7befc5ea5073358093efbe12d0) Reviewed-on: https://gerrit.libreoffice.org/56565 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2018-06-30thread-safe initialization of transliteration objectsLuboš Luňák1-18/+16
Otherwise causes problem with ooo#70213-3 (and mnOpenCLMinimumFormulaGroupSize disabled). Change-Id: I3acfad34476e74595b55a559df5bfd72945a1869 Reviewed-on: https://gerrit.libreoffice.org/56291 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit 8617c8ed9047e46808c292bd68e5b573aa7af74d) Reviewed-on: https://gerrit.libreoffice.org/56451
2018-06-25tdf#118296 Grid line color cannot be revertedMaxim Monastirsky1-1/+0
Use same approach as in Tools > Options... > LibreOffice > Application Colors. Change-Id: I5061709222cde2591e2937cdd67bbb5b6ad7f3f8 Reviewed-on: https://gerrit.libreoffice.org/56344 Tested-by: Jenkins Reviewed-by: Heiko Tietze <tietze.heiko@gmail.com> Tested-by: Heiko Tietze <tietze.heiko@gmail.com> (cherry picked from commit 364c828e6ea9e78a145a4ec32a677c7539a913a9) Reviewed-on: https://gerrit.libreoffice.org/56383 Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2018-06-25use ScInterpreterContext in ScValueIteratorLuboš Luňák1-0/+1
Otherwise GetFormatTable() asserts with fdo#74507-1 (and mnOpenCLMinimumFormulaGroupSize disabled). Change-Id: Ic624076bd552a2f8370f942063e8b79ca703d9fc Reviewed-on: https://gerrit.libreoffice.org/56288 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit e7792c4bf270d5a98ec5b8d2be2e25c11a8ecf02) Reviewed-on: https://gerrit.libreoffice.org/56373 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-06-25blacklist ocDde and ocWebservice for calc's threadingLuboš Luňák1-1/+3
fdo#35927-1 (with minimal formula size disabled) crashes in LinkManager::CloseCachedComps(). The whole LinkManager class feels thread-unsafe, so just blacklist. Change-Id: Idd7ec6b47f5269c977b600dadfc3a05a5287a86d Reviewed-on: https://gerrit.libreoffice.org/56241 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit 0a4a42e98479996b2f3bb19a884c057518fece4f) Reviewed-on: https://gerrit.libreoffice.org/56372 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-06-25disable calc's threading for external referencesLuboš Luňák1-8/+27
Since the code uses ScExternalRefManager, which caches values, so better just disable it. Can be seen e.g. with fdo#78490-1 (and mnOpenCLMinimumFormulaGroupSize disabled). The doc actually asserts in GetFormatTable() called from ScExternalRefManager, but there seems to be no point in fixing just the assert if the whole class is possibly problematic. Change-Id: I4ace488414fd15b4ad0b88da51205b02c561c7a6 Reviewed-on: https://gerrit.libreoffice.org/56377 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2018-06-20Related: tdf#117049 treat yet unknown result as initial 0.0Eike Rathke1-1/+8
For the first =A1+B1 in B1 with iterations the result could had been #VALUE! depending on string conversion calculation settings. Change-Id: I8d7a745d67ba7a20f7a66e8aa143642d08ea5111 Reviewed-on: https://gerrit.libreoffice.org/56173 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 93dcfa7ee157dd865f5d266d1f877014462eac72) Reviewed-on: https://gerrit.libreoffice.org/56179
2018-06-20tdf#77517 make Calc function ROW accept external references.Winfried Donkers1-9/+30
Change-Id: Ibd4f858abe825652c3df68ce7a21cbf16feea735 Reviewed-on: https://gerrit.libreoffice.org/55824 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com> (cherry picked from commit b1740fba0d1e6e3d69c3781734509317f42a0e4f) Reviewed-on: https://gerrit.libreoffice.org/56129
2018-06-20do not allow threading in SwInterpreter for threading-disabled tokensLuboš Luňák1-1/+1
If a token is not suitable for the generic threading code, it's presumably not suitable for threading with SwInterpreter either. This is possibly already handled by checks in CheckToken(), but this can't hurt, just in case a token is in CheckForThreading() but not in CheckToken(). Change-Id: Ib969a21e9021fc6debc2131dc718419c6b25d363 Reviewed-on: https://gerrit.libreoffice.org/55886 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit 39dc45b23a6aacb6439162cbbb7762f3d0c0b5fb) Reviewed-on: https://gerrit.libreoffice.org/56140 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2018-06-20clean up calc'c choosing between threading and OpenCLLuboš Luňák1-34/+14
Now there's just one place to decide what is used first, in InterpretFormulaGroup(). Place in other places now checks both threading and OpenCL, which should be cheap, but it also allows e.g. falling back from OpenCL to threading if it doesn't work out for a specific formula group. Change-Id: I0cac55197c5278174d303691c20f77b842995c84 Reviewed-on: https://gerrit.libreoffice.org/55885 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins (cherry picked from commit e0e21f2747c19dae13332f4e59949c717aa114f3) Reviewed-on: https://gerrit.libreoffice.org/56139 Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2018-06-20tdf#77517 make Calc function COLUMN accept external references.Winfried Donkers1-9/+31
Change-Id: Ife00755586be9a42ac5cf1f9b3debb396db1b45f Reviewed-on: https://gerrit.libreoffice.org/56055 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com> (cherry picked from commit 28f3e44e99283ede636c28c68bffb2b9df0bbcf8) Reviewed-on: https://gerrit.libreoffice.org/56128
2018-06-14Resolves: tdf#118161 use ScCellIterator::isEmpty() for COUNTA()Eike Rathke1-1/+1
... instead of hasEmptyData() that considers inherited svEmptyCell as well. Effectively a regression from commit 0e9e3be6f51436c1e5bf1481a434a85e334c09ea CommitDate: Tue Mar 26 01:41:17 2013 -0400 More on ScCellIterator usage migration. that started to include mpCurFormula->IsEmpty() in ScCellIterator::isEmpty() which later was renamed to ScCellIterator::hasEmptyData() and isEmpty() introduced for real empty. Change-Id: Iec97d58080016c28bc9a7e47d056e4d301263928 (cherry picked from commit cfe2e4eb835c06b24adabd60c7a3fddbd3f4dbc9) Reviewed-on: https://gerrit.libreoffice.org/55803 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins
2018-06-12do not even consider ScTokenArray for OpenCL if it's disabledLuboš Luňák1-10/+15
If sc/qa/unit/data/ods/functions.ods is run with OpenCL disabled (and the mnOpenCLMinimumFormulaGroupSize check disabled too), then ScTokenArray::CheckToken() considers the token for OpenCL, and if the token is ocExternal, it passes all the related OpenCL checks, and thus ScTokenArray::CheckForThreading() is never called. However, since OpenCL is disabled, then actually the threaded code will be executed, since the blacklisting for ocExternal has not been done. Change-Id: Ib4d4d63d3925746f6e13da0611ac869e9a094b5b Reviewed-on: https://gerrit.libreoffice.org/55676 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com> (cherry picked from commit fb4ad5b0c766440e1a47d991c6cbc9cb017ada59) Reviewed-on: https://gerrit.libreoffice.org/55719 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Luboš Luňák <l.lunak@collabora.com>
2018-06-06blacklist ocExternal for calc's threaded calculationsLuboš Luňák1-1/+2
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> (cherry picked from commit abb19edc79bd7d96827214d3b49f80e270e1c0b7) Reviewed-on: https://gerrit.libreoffice.org/55390 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Luboš Luňák <l.lunak@collabora.com>
2018-06-06fix broken control flow in ScTokenArray::CheckToken()Luboš Luňák1-19/+20
Before commit b366adcf5aca this function didn't do anything for unhandled opcodes, but the commit made the else branch disable vectorization for "the rest" of opcodes. That meant that basic opcodes such as ocAdd, which didn't get thrown out by the SC_OPCODE_START_BIN_OP block (since they are in the allowed subset), ended up in the else block and vectorization got disabled. Change-Id: I9eb408b601f48b8d7b5022ec85225d92729cd778 Reviewed-on: https://gerrit.libreoffice.org/55362 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org> (cherry picked from commit a5bae14bc3ae4fd1d0bd3bf72c5a6151d1ccf762) Reviewed-on: https://gerrit.libreoffice.org/55367 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Luboš Luňák <l.lunak@collabora.com>
2018-06-06fix misplaced case labelsLuboš Luňák1-6/+6
Jump opcodes such as ocIf are quite clearly not in the function range, as can be seen in include/formula/opcode.hxx . This used to be harmless, since originally ScTokenArray::CheckToken() didn't do anything in the default case, but commit b366adcf5aca changed it to disable vectorization for unhandled opcodes. Change-Id: Ia182f446f1da819e18309075aa00251674640c74 Reviewed-on: https://gerrit.libreoffice.org/55361 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org> (cherry picked from commit 377cb34ac023096af7f1708c3d4ea5293d4cc7ab) Reviewed-on: https://gerrit.libreoffice.org/55368 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Luboš Luňák <l.lunak@collabora.com>
2018-06-05Add "Unsupported inline array content." BadArrayContent message, tdf#117879Eike Rathke1-1/+1
Change-Id: I176884ea5161c4f12419431a74bfb2c6fbed4e0f Reviewed-on: https://gerrit.libreoffice.org/55317 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org> (cherry picked from commit 5870cf6d9b42094dfda3dbf85817003e021d6559) Reviewed-on: https://gerrit.libreoffice.org/55324
2018-06-05Resolves: tdf#117879 preserve formula after inline array errorEike Rathke1-1/+8
Use FormulaError::NestedArray for now to be able to backport without new string resources. Introduce a more specific error in another change. Change-Id: I49bf731f0b17c81dc6a125718bf104e218e508cc Reviewed-on: https://gerrit.libreoffice.org/55300 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com> (cherry picked from commit 2d330a5c48fd200db10fba7c40688221185c2dec) Reviewed-on: https://gerrit.libreoffice.org/55307 Tested-by: Jenkins <ci@libreoffice.org>
2018-06-04avoid using EditEngine in ScEditUtils::GetString() if possibleLuboš Luňák1-0/+3
According to 1ecdc7aaf66 it is really needed only for resolving fields, so if there's no field, simply concatenate the contents, as used to be the case before that commit. This should be faster and also safer in the case of Calc's threading enabled. Change-Id: I23a2e1873deb8538e2a1ae0dd80af7e5356c18a5 Reviewed-on: https://gerrit.libreoffice.org/54986 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins <ci@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/55275 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Luboš Luňák <l.lunak@collabora.com>
2018-06-04blacklist ocDBSum for calc's threadingLuboš Luňák1-1/+2
Triggers a number of asserts on hard-recalc (Shift+Ctrl+F9) with ooo#58183-1 that would require passing ScContextInterpreter* to a number of functions, so just blacklist it. Change-Id: I0c3666a3423cea7c77f530480b8b63506c4bbad2 Reviewed-on: https://gerrit.libreoffice.org/54933 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins <ci@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/55274 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Luboš Luňák <l.lunak@collabora.com>
2018-05-24reduce some unnecessary ScRangeList copyingNoel Grandin1-20/+4
and reduce unnecessary work in ScRangeList Change-Id: I0ee767fe28571f75f8a2ff980cea27c97c9797dc Reviewed-on: https://gerrit.libreoffice.org/54705 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-05-24Calc threading : Check for "self" references...Dennis Francis1-0/+37
...on indirect dependencies too. Here a self reference to any formula-group means if there are any references in a formula (of the formula-group itself or any of its dependencies) that points to any element inside the formula-group. If there are any self-references, then that formula-group can't be computed in parallel. For example, with this patch we can detect the following case:- Suppose the formula-group that we want to check is: "=(F2+G2-10)*10.0" spanning A2:A100. Let the formula-group starting at F2 be "=A1*0.1-10". The indirect dependency formula-group starting at F2, references back the elements of our original formula-group at A2. This makes the F.G at A2 unsafe for parallel computation. Concretly, this patch fixes a recalc crash on tdf#63638/1 Change-Id: I7b999a34571b191d2f70da6a3831f78b24a6b0a7 Reviewed-on: https://gerrit.libreoffice.org/54433 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins <ci@libreoffice.org>
2018-05-23extend mutex protection to the whole of ScEditUtil::GetString()Luboš Luňák1-2/+2
Otherwise with Calc's threading enabled and novell#306440-1.xlsx this function gets called multiple times at the same time and the SetText() calls operate on the same object. Change-Id: Ic044132ac98bed46440aadbdad6ad36f3a2e9beb Reviewed-on: https://gerrit.libreoffice.org/54520 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2018-05-22tdf#42949 Fix IWYU warnings in sc/inc/formularesult.hxxGabor Kelemen3-0/+3
Found with bin/find-unneeded-includes This one caused lots of fallout, manage it separately Change-Id: Idf153caa07b1edd85352609806f5b8b74fc6ead8 Reviewed-on: https://gerrit.libreoffice.org/54410 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2018-05-21sc: Avoid looking up system clock twice to get current datetimeTakeshi Abe1-3/+2
Change-Id: I904067260c15263f8169f095809e642d0738f6bb Reviewed-on: https://gerrit.libreoffice.org/53957 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>