summaryrefslogtreecommitdiff
path: root/basic
AgeCommit message (Collapse)Author
2020-09-09tdf#134477 add VclMessageType::Other to indicate image-less generic InfoBoxCaolán McNamara
Change-Id: I76e86bf4d82b33771ea2900517712be57ae7f03d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102234 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2020-09-07tdf#136032 - abort scan of a string beginning with a hashtagAndreas Heinisch
Abort scan of a string beginning with a hashtag, if a comma is found. Otherwise, the compiler raises a syntax error. If the string ends with a hashtag too, it will be parsed later checking for a date literal. Change-Id: I078a2302f5c65206367a00fbc584ffa7b9ede031 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102099 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 11292d1cc405e7c3b9e1f374cc7581a63a54b994) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101973 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2020-08-28tdf#136143 - reset SbxFlagBits::Fixed SbiRuntime::StepPARAMAndreas Heinisch
In order to prevent type conversion errors, reset a variable of type SbxERROR to not fixed. Variable will be of type SbxERROR, but can be converted to any requested type. Change-Id: Ic856376e3f8232577a5e894a2adb2545c8723033 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101419 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 781b6ac998370f2923c0783100da7086bfad622d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101464
2020-08-10tdf#135470: Fix checksMike Kaganski
The check should prevent error in case when the variable has wrong type. IsObject returns false e.g. for arrays, which are valid iterables. So proper check is using GetFullType, which will give SbxOBJECT for any variable for which GetObject does not set error. "Next" should also generate an error for uninitialized loops. Regression after 5760c94b8847164f9a7a181f031c7c86643944af Change-Id: Ib58e1cc76ef63aa1ff8a86c9d5dc956e4780fb49 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100258 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit e67ffd5a62c8c27697da594a0fea2362317f221f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100225 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2020-07-14tdf#134576: proper handling of For/For Each with On Error Resume NextMike Kaganski
1. In SbiRuntime::PushForEach, always initialize SbiForStack::eForType to avoid handling the loop as simple For loop in SbiRuntime::StepNEXT. 2. In SbiRuntime::PushForEach, just like in SbiRuntime::PushFor, don't set error, but imitialize the loop properly. This allows to proceed to SbiRuntime::StepTESTFOR, where the error will be handled gracefully. 3. In SbiRuntime::StepTESTFOR, check for the proper initialization of the iteration, and set the error. 4. In SbiRuntime::StepTESTFOR, on error, modify the type of iteration into Error - to make sure that loop ends on next iteration (so only a single iteration happens inside the Resume Next). Change-Id: Idd0bab79fb0099fa3ad295b7fc6ab2eb6173f7b8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98537 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 5760c94b8847164f9a7a181f031c7c86643944af) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98758 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2020-07-14tdf#134576 at least don't crash in this edge-caseCaolán McNamara
Change-Id: I69638fd2130c1ba68915906ced62bda2cd883932 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98491 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit b55f56ca0417105f1e10131503d5560fb6c7e452) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98757 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2020-07-14tdf#134692: copy deep when there are multiple references to the old arrayMike Kaganski
E.g., when we redim a copy of an array, the other copy would still have its old dimensions, so shallow copy would share some array elements between the now different arrays. The other possible approach would be to try to modify the original array to have the ByRef semantics. Change-Id: Iab272ecbf4ade67048d6a126f17322441c5aa808 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98481 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 2333dfd69c2933004834a572c981ca20a0537422) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98637 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2020-06-17tdf#133913 - create variable with Variant/Type in StepLOADNCAndreas Heinisch
During the loading of numeric constants in StepLOADNC, create variables of type Variant and convert them to the requested type, i.e. Variant/Type in order to prevent type conversion errors, when they are passed to a method with variant parameter types. Change-Id: I2ab0111b5b53dd2de9523ba7cf12bd2519d050b0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96402 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 0f6e012057bf0d1cc339154e8af6586d9615a37f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96498 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2020-06-16tdf#132563 - Convert parameters of type SbxEMPTYAndreas Heinisch
During the construction of the parameter list of a method, convert parameters of type SbxEMPTY to their requested type, since missing parameters are handled differently in StepEMPTY, where separate parameter information (SbxMISSING) is added. Change-Id: Ie1e027cfdd652404ec29bd3d05e7daf533468936 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96088 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins (cherry picked from commit 345cb192f0bc2fef97ae52ade48efc2d8591a165) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96216 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2020-05-26Fix loplugin:simplifypointertobool for libstdc++ std::shared_ptrStephan Bergmann
...where the get member function is defined on a std::__shared_ptr base class, so loplugin:simplifypointertobool used to miss those until now. (While e.g. using libc++ on macOS found those cases.) 366d08f2f6d4de922f6099c62bb81b49d89e0a68 "new loplugin:simplifypointertobool" was mistaken in breaking isSmartPointerType(const clang::Type* t) out of isSmartPointerType(const Expr* e); c874294ad9fb178df47c66875bfbdec466e39763 "Fix detection of std::unique_ptr/shared_ptr in loplugin:redundantpointerops" had introduced that indivisible two-step algorithm on purpose. The amount of additional hits (on Linux) apparently asked for turning loplugin:simplifypointertobool into a rewriting plugin. Which in turn showed that the naive adivce to just "drop the get()" is not sufficient in places that are not contextually converted to bool, as those places need to be wrapped in a bool(...) functional cast now. If the expression was already wrapped in parentheses, those could be reused as part of the functional cast, but implementing that showed that such cases are not yet found at all by the existing loplugin:simplifypointertobool. Lets leave that TODO for another commit. Besides the changes to compilerplugins/ itself, this change has been generated fully automatically with the rewriting plugin on Linux. Change-Id: I83107d6f634fc9ac232986f49044d7017df83e2a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94888 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Jenkins
2020-05-24inline some use-once typedefsNoel Grandin
Change-Id: Idddba2f3fd05265b08dbc88edb6152d34a166052 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94730 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-21tdf#132389 - case-insensitive operation for non-ASCII charactersAndreas Heinisch
Support case-insensitive operation for non-ASCII characters in the Replace function in Basic. Change-Id: I48069ad7be1ae0f012c52f595cc44e6b50580b94 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94580 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-19tdf#88205 EasyHack change css::uno::Sequence initializationsvgeof
1st commit. Use initializer lists for uno::Sequence in 4 files Change-Id: I0192b4b8f023fb8d606dff81c4b910c8c7c2a9a2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93900 Reviewed-by: Michael Stahl <michael.stahl@cib.de> Tested-by: Jenkins
2020-05-15use for-range on Sequence in basctl..canvasNoel Grandin
Change-Id: Idad3d8fbe785c7b1b8b287a3227372adb2757de8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94260 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-11fix leak in basicNoel Grandin
Change-Id: I9971a824b98193e7d6f926208a4bb9bfe92d5b43 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93935 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-10new loplugin:simplifypointertoboolNoel Grandin
Change-Id: Iff68e8f379614a6ab6a6e0d1bad18e70bc76d76a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91907 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-04-26update pchesCaolán McNamara
Change-Id: I83a61da7dda6c72552eecd377f1c3744c92a797e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92909 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-04-25tdf#132388: reimplement SbRtl_ReplaceMike Kaganski
It should not convert strings to uppercase each loop; it should use OUStringBuffer to avoid extra allocations. This reduces tick count for the code in the bug from ~6000 to ~30. Change-Id: I89ea062fc6d012464bb461b6a8ef321f8cc62fe6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92884 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-04-22uiobject.hxx only needs forward declaresCaolán McNamara
and update pches accordingly Change-Id: I411712532fd85961bffe6678416fcdc1d9c7f53d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92617 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-04-19loplugin:flatten in basicNoel Grandin
Change-Id: Icb8e3cda312b50c9a9f12f96bec1c746f41c8979 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92483 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-04-14loplugin:buriedassign in b*Noel Grandin
Change-Id: Ic20f46105a30b54bc5a991b4070e6c8edb15376e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92189 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-04-02tdf#79426, tdf#125180 - Don't convert missing parameters to requested typeAndreas Heinisch
If a particular parameter type is requested during the construction of a parameter list, don't convert missing parameters to avoid implicit casting to the specified data type and value of the method. Missing parameters are handled in StepEMPTY, where additional information about missing parameters is added. Change-Id: Ia413b2996d7d1feecedc1dfefaf6baf0fd9d917e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90215 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-30OSL_ASSERT->assert in basicNoel Grandin
Change-Id: I8abe14706e9c6d1323d5d66a8b700ddaa2803f2d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91333 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-03-30Cleanup for tdf#130476, tdf#62323 and tdf#62326Andreas Heinisch
Change-Id: I21b934415a8fd39e0dfd6a4c3cc8d589c84084f2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91222 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-27tdf#130476 - take into account trailing data type charactersAndreas Heinisch
For hex/octal literals take into account trailing suffix types from GetSuffixType in basic/source/comp/scanner.cxx. The suffix type $ (String) is not allowed for numeric values or hex/octal literals and leads to a syntax error (ERRCODE_BASIC_SYNTAX) during compile time. Change-Id: Id6c4bbf1296361879f7dec461a48bbdc5c683338 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90978 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-24Initialize bufferMike Kaganski
Also assert that correct data type is passed to SbiStringPool::Add. Change-Id: I774d983be82d702b31de1054d13661e1d0e9c1dd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90983 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-24VBA Err object raise method TestCasesLibreOfficiant
Err.Raise(#) enables 'User-Defined Exceptions' Std Basic alternative is: Error # 'without parentheses which throws pre-defined error codes. Change-Id: I76229b237066e33229d4d13e6742c660887fda2e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85017 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-24tdf#131296: get numeric value with its data type in StepLOADNCAndreas Heinisch
In order to load numeric values, generate SbiOpcode::NUMBER_ opcodes including the numeric value and its data type instead of SbiOpcode::CONST_. The numeric value and its data type will be restored in SbiRuntime::StepLOADNC. When the new compiled code is stored in documents, e.g. password-protected libraries, leagcy LO versions will just read up to non-numeric characters, thus correctly obtaining number value and ignoring the type, so the change is backward-compatible. To interpret legacy compiled code, old treatment of SbiRuntime::StepLOADI is restored, reverting commit 0b4f8bf571baf2ccd5a8aafdc4deb41867420be3. This change reimplements the fix for tdf#129596. Change-Id: I46ebfc77f9bea69479968950c0fb7264e4a7ab27 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90858 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-24Clear SbxAppData::m_aGlobErr earlyStephan Bergmann
...before the destruction of the std::unique_ptr<SbxAppData> xSbxAppData; member during the destruction of BasicDLLImpl can set that BasicDLLImpl::xSbxAppData to null. Because the destruction of SbxAppData::m_aGlobErr may call into SbxValue::Put -> SbxBase::GetError -> GetSbxData_Impl, which would recursively access that return *BasicDLLImpl::BASIC_DLL->xSbxAppData; This causes problems with libc++ (i.e., on macOS), where ~std::unique_ptr sets its internal pointer to null before calling the destructor of the pointed-to object. Whereas it happens to not cause problems with e.g. libstdc++, where ~std::unique_ptr calls the destructor of the pointed-to object first before setting the pointer to null. The problem showed up with <https://gerrit.libreoffice.org/c/core/+/85017/14> "VBA Err object raise method TestCases", where CppunitTest_basic_macros kept failing on macOS with > * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) > frame #0: 0x00000001119f18e7 libsblo.dylib`SbxValue::Put(this=0x000000014c1cff00, rVal=0x00007ffeefbf1218) + 55 at basic/source/sbx/sbxvalue.cxx:414 > 411 bool SbxValue::Put( const SbxValues& rVal ) > 412 { > 413 bool bRes = false; > -> 414 ErrCode eOld = GetError(); > 415 if( eOld != ERRCODE_NONE ) > 416 ResetError(); > 417 if( !CanWrite() ) > Target 0: (cppunittester) stopped. > (lldb) bt > * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) > * frame #0: 0x00000001119f18e7 libsblo.dylib`SbxValue::Put(this=0x000000014c1cff00, rVal=0x00007ffeefbf1218) + 55 at basic/source/sbx/sbxvalue.cxx:414 > frame #1: 0x00000001119f2399 libsblo.dylib`SbxValue::Clear(this=0x000000014c1cff00) + 553 at basic/source/sbx/sbxvalue.cxx:176 > frame #2: 0x00000001119f20d0 libsblo.dylib`SbxValue::~SbxValue(this=0x000000014c1cff00, vtt=0x0000000111a2af70) + 80 at basic/source/sbx/sbxvalue.cxx:139 > frame #3: 0x00000001119f825d libsblo.dylib`SbxVariable::~SbxVariable(this=0x000000014c1cff00, vtt=0x0000000111a2af68) + 381 at basic/source/sbx/sbxvar.cxx:125 > frame #4: 0x00000001119e619a libsblo.dylib`SbxProperty::~SbxProperty(this=0x000000014c1cff00, vtt=0x0000000111a2af60) + 42 at basic/source/sbx/sbxobj.cxx:861 > frame #5: 0x000000011188ce81 libsblo.dylib`SbUnoProperty::~SbUnoProperty(this=0x000000014c1cff00, vtt=0x0000000111a2af58) + 97 at basic/source/classes/sbunoobj.cxx:2591 > frame #6: 0x000000011188ceb3 libsblo.dylib`SbUnoProperty::~SbUnoProperty(this=0x000000014c1cff00) + 35 at basic/source/classes/sbunoobj.cxx:2591 > frame #7: 0x000000011188cf0c libsblo.dylib`SbUnoProperty::~SbUnoProperty(this=0x000000014c1cff00) + 28 at basic/source/classes/sbunoobj.cxx:2591 > frame #8: 0x000000011180c235 libsblo.dylib`SvRefBase::ReleaseRef(this=0x000000014c1cffa0) + 197 at include/tools/ref.hxx:163 > frame #9: 0x000000011184fda7 libsblo.dylib`tools::SvRef<SbxVariable>::~SvRef(this=0x000000014c1d2490) + 55 at include/tools/ref.hxx:56 > frame #10: 0x000000011184a545 libsblo.dylib`tools::SvRef<SbxVariable>::~SvRef(this=0x000000014c1d2490) + 21 at include/tools/ref.hxx:55 > frame #11: 0x00000001119be5af libsblo.dylib`SbxVarEntry::~SbxVarEntry(this=0x000000014c1d2490) + 47 at basic/source/sbx/sbxarray.cxx:31 > frame #12: 0x00000001119bc3d5 libsblo.dylib`SbxVarEntry::~SbxVarEntry(this=0x000000014c1d2490) + 21 at basic/source/sbx/sbxarray.cxx:31 > frame #13: 0x00000001119bed29 libsblo.dylib`std::__1::allocator<SbxVarEntry>::destroy(this=0x000000014c1940a0, __p=0x000000014c1d2490) + 25 at c++/v1/memory:1931 > frame #14: 0x00000001119becfd libsblo.dylib`void std::__1::allocator_traits<std::__1::allocator<SbxVarEntry> >::__destroy<SbxVarEntry>((null)=std::__1::true_type @ 0x00007ffeefbf1448, __a=0x000000014c1940a0, __p=0x000000014c1d2490) + 29 at c++/v1/memory:1793 > frame #15: 0x00000001119beccd libsblo.dylib`void std::__1::allocator_traits<std::__1::allocator<SbxVarEntry> >::destroy<SbxVarEntry>(__a=0x000000014c1940a0, __p=0x000000014c1d2490) + 29 at c++/v1/memory:1630 > frame #16: 0x00000001119bec7b libsblo.dylib`std::__1::__vector_base<SbxVarEntry, std::__1::allocator<SbxVarEntry> >::__destruct_at_end(this=0x000000014c194090, __new_last=0x000000014c1d2490) + 91 at c++/v1/vector:426 > frame #17: 0x00000001119bebab libsblo.dylib`std::__1::__vector_base<SbxVarEntry, std::__1::allocator<SbxVarEntry> >::clear(this=0x000000014c194090) + 27 at c++/v1/vector:369 > frame #18: 0x00000001119bea47 libsblo.dylib`std::__1::__vector_base<SbxVarEntry, std::__1::allocator<SbxVarEntry> >::~__vector_base(this=0x000000014c194090) + 39 at c++/v1/vector:463 > frame #19: 0x00000001119be958 libsblo.dylib`std::__1::vector<SbxVarEntry, std::__1::allocator<SbxVarEntry> >::~vector(this=0x000000014c194090 size=3) + 40 at c++/v1/vector:555 > frame #20: 0x00000001119bafa5 libsblo.dylib`std::__1::vector<SbxVarEntry, std::__1::allocator<SbxVarEntry> >::~vector(this=0x000000014c194090 size=3) + 21 at c++/v1/vector:550 > frame #21: 0x00000001119bb457 libsblo.dylib`SbxArray::~SbxArray(this=0x000000014c194080, vtt=0x0000000111a385e8) + 71 at basic/source/sbx/sbxarray.cxx:75 > frame #22: 0x00000001119bb4a3 libsblo.dylib`SbxArray::~SbxArray(this=0x000000014c194080) + 35 at basic/source/sbx/sbxarray.cxx:74 > frame #23: 0x00000001119bb4fc libsblo.dylib`SbxArray::~SbxArray(this=0x000000014c194080) + 28 at basic/source/sbx/sbxarray.cxx:74 > frame #24: 0x000000011180c235 libsblo.dylib`SvRefBase::ReleaseRef(this=0x000000014c194080) + 197 at include/tools/ref.hxx:163 > frame #25: 0x000000011184dbd7 libsblo.dylib`tools::SvRef<SbxArray>::~SvRef(this=0x000000014c1cfe58) + 55 at include/tools/ref.hxx:56 > frame #26: 0x000000011184cc25 libsblo.dylib`tools::SvRef<SbxArray>::~SvRef(this=0x000000014c1cfe58) + 21 at include/tools/ref.hxx:55 > frame #27: 0x00000001119e0d10 libsblo.dylib`SbxObject::~SbxObject(this=0x000000014c1cfdd0, vtt=0x0000000111a37d18) + 288 at basic/source/sbx/sbxobj.cxx:111 > frame #28: 0x000000011188b73d libsblo.dylib`SbUnoObject::~SbUnoObject(this=0x000000014c1cfdd0, vtt=0x0000000111a37d10) + 221 at basic/source/classes/sbunoobj.cxx:2387 > frame #29: 0x0000000111990d51 libsblo.dylib`SbxErrObject::~SbxErrObject(this=0x000000014c1cfdd0, vtt=0x0000000111a37d08) + 113 at basic/source/classes/errobject.cxx:184 > frame #30: 0x0000000111990d83 libsblo.dylib`SbxErrObject::~SbxErrObject(this=0x000000014c1cfdd0) + 35 at basic/source/classes/errobject.cxx:183 > frame #31: 0x0000000111990dfc libsblo.dylib`SbxErrObject::~SbxErrObject(this=0x000000014c1cfdd0) + 28 at basic/source/classes/errobject.cxx:183 > frame #32: 0x000000011180c235 libsblo.dylib`SvRefBase::ReleaseRef(this=0x000000014c1cfee8) + 197 at include/tools/ref.hxx:163 > frame #33: 0x00000001119bcac6 libsblo.dylib`tools::SvRef<SbxVariable>::clear(this=0x0000000110e365a8) + 70 at include/tools/ref.hxx:64 > frame #34: 0x00000001119ca764 libsblo.dylib`SbxAppData::~SbxAppData(this=0x0000000110e365a0) + 84 at basic/source/sbx/sbxbase.cxx:49 > frame #35: 0x00000001119ca965 libsblo.dylib`SbxAppData::~SbxAppData(this=0x0000000110e365a0) + 21 at basic/source/sbx/sbxbase.cxx:45 > frame #36: 0x000000011199272b libsblo.dylib`std::__1::default_delete<SbxAppData>::operator(this=0x0000000110e2cfb0, __ptr=0x0000000110e365a0)(SbxAppData*) const + 43 at c++/v1/memory:2363 > frame #37: 0x00000001119926af libsblo.dylib`std::__1::unique_ptr<SbxAppData, std::__1::default_delete<SbxAppData> >::reset(this=0x0000000110e2cfb0, __p=0x0000000000000000) + 95 at c++/v1/memory:2618 > frame #38: 0x0000000111992649 libsblo.dylib`std::__1::unique_ptr<SbxAppData, std::__1::default_delete<SbxAppData> >::~unique_ptr(this=0x0000000110e2cfb0) + 25 at c++/v1/memory:2572 > frame #39: 0x0000000111992625 libsblo.dylib`std::__1::unique_ptr<SbxAppData, std::__1::default_delete<SbxAppData> >::~unique_ptr(this=0x0000000110e2cfb0) + 21 at c++/v1/memory:2572 > frame #40: 0x00000001119925f5 libsblo.dylib`(anonymous namespace)::BasicDLLImpl::~BasicDLLImpl(this=0x0000000110e2cfa0) + 53 at basic/source/runtime/basrdll.cxx:33 > frame #41: 0x0000000111992415 libsblo.dylib`(anonymous namespace)::BasicDLLImpl::~BasicDLLImpl(this=0x0000000110e2cfa0) + 21 at basic/source/runtime/basrdll.cxx:33 > frame #42: 0x000000011199243c libsblo.dylib`(anonymous namespace)::BasicDLLImpl::~BasicDLLImpl(this=0x0000000110e2cfa0) + 28 at basic/source/runtime/basrdll.cxx:33 > frame #43: 0x000000011180c235 libsblo.dylib`SvRefBase::ReleaseRef(this=0x0000000110e2cfa0) + 197 at include/tools/ref.hxx:163 > frame #44: 0x0000000111992039 libsblo.dylib`tools::SvRef<SvRefBase>::clear(this=0x00007ffeefbf1bb0) + 57 at include/tools/ref.hxx:64 > frame #45: 0x0000000111991f0b libsblo.dylib`BasicDLL::~BasicDLL(this=0x00007ffeefbf1bb0) + 123 at basic/source/runtime/basrdll.cxx:69 > frame #46: 0x0000000111992055 libsblo.dylib`BasicDLL::~BasicDLL(this=0x00007ffeefbf1bb0) + 21 at basic/source/runtime/basrdll.cxx:66 > frame #47: 0x0000000110f07a5a libtest_basic_macros.dylib`MacroSnippet::~MacroSnippet(this=0x00007ffeefbf1ba8) + 74 at basic/qa/cppunit/basictest.hxx:23 > frame #48: 0x0000000110f07a05 libtest_basic_macros.dylib`MacroSnippet::~MacroSnippet(this=0x00007ffeefbf1ba8) + 21 at basic/qa/cppunit/basictest.hxx:23 > frame #49: 0x0000000110f269b7 libtest_basic_macros.dylib`(anonymous namespace)::VBATest::testMiscVBAFunctions(this=0x0000000100651890) + 1319 at basic/qa/cppunit/test_vba.cxx:168 [...] Change-Id: I776b7f0686e0915b69119b2e6a513e2a4b40822f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90967 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-03-12tdf#130977 replace `rtl::math::isFinite` with `std::isfinite`.Yukio Siraichi
- make all calls look like `std::isfinite`. - change the comments referring `rtl::math::isFinite`. Change-Id: I0cde9ceb9f20150467b454cddde5e62003cfde1a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90234 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-02tdf#36737 - Initialize default values of optionalsAndreas Heinisch
Initialize default values of optionals in function headers. In LO Basic, optional parameters are allowed, but without any default values. Missing parameters will not be initialized to their respective default values of its datatype, either. With option Compatible, optional parameters are allowed with default values. Missing optional parameters that don't have explicit default values will not be initialized to their default values of its datatype. With option VBASupport, optional parameters are allowed with default values. Missing optional parameters that don't have explicit default values will be initialized to their default values of its datatype. Change-Id: I57aabae5f70d1cf6c4e8feb95ce0db6af753383c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87550 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-02-28Remove dead conditionStephan Bergmann
The original $(if $(filter 140,$(VCVER)),legacy_stdio_definitions) had been added with d2a44e62704f185a0acecbb6320b92a4df3063b9 "tdf#99696 fix build error for 64bit Windows in unit tests using ADODB" at a time when configure.ac supported VCVER=120 (i.e., VS 2013) and VCVER=140 (i.e., VS 2015). It was presumably meant to express the condition $(VCVER) >= 140 which is always true by now (where our baseline is already at VCVER=150, i.e., VS 2017). Change-Id: I1cd48604d102c32e1d829395b65a00539f318b6c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89686 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-02-24Renaming variables for upcoming commit for tdf#36737Andreas Heinisch
... as discussed in https://gerrit.libreoffice.org/c/core/+/87550 Change-Id: I6262caf59751a2e0b6206f02aa1c7de55738a568 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89333 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-02-22LibO Basic Property Get/SetLibreOfficiant
Change-Id: I1ef323560ffaacf9e44c8ba9332b825ffc38d59e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/83943 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-02-21Drop o3tl::optional wrapperStephan Bergmann
...now that macOS builds are guaranteed to have std::optional since 358146bbbd1b9775c12770fb5e497b6ec5adfc51 "Bump macOS build baseline to Xcode 11.3 and macOS 10.14.4". The change is done mostly mechanically with > for i in $(git grep -Fl optional); do > sed -i -e 's:<o3tl/optional\.hxx>\|\"o3tl/optional\.hxx\":<optional>:' \ > -e 's/\<o3tl::optional\>/std::optional/g' \ > -e 's/\<o3tl::make_optional\>/std::make_optional/g' "$i" > done > for i in $(git grep -Flw o3tl::nullopt); do > sed -i -e 's/\<o3tl::nullopt\>/std::nullopt/g' "$i" > done (though that causes some of the resulting #include <optional> to appear at different places relative to other includes than if they had been added manually), plus a few manual modifications: * adapt bin/find-unneeded-includes * adapt desktop/IwyuFilter_desktop.yaml * remove include/o3tl/optional.hxx * quote resulting "<"/">" as "&lt;"/"&gt;" in officecfg/registry/cppheader.xsl * and then solenv/clang-format/reformat-formatted-files Change-Id: I68833d9f7945e57aa2bc703349cbc5a56b342273 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89165 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-02-20tdf#130426 Support Basic Chr(&H8000), ..., Chr(&HFFFF) againStephan Bergmann
...after it had been broken by d5b7627a0e738c0866b819910153b96b611813f8 "tdf#62326 - Macros: Converting Hex strings of negative value". The corresponding help update is <https://gerrit.libreoffice.org/c/help/+/89100> "tdf#130426 Update documentation for Basic Chr and ChrW functions". Change-Id: I5f08b1ef907d840b491315a1f445f729b4999d0d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89090 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-02-16clang-format accessibility & basctl with under 5-percent lines of changeMuhammet Kara
Files which could become clang-format conformant with under 5-percent lines of change relative to the total count of lines in the file are found by using bin/find-clang-format.py, and fixed with /opt/lo/bin/clang-format -i <path-of-the-file> There will be follow-up patches to fix all 'under-5-percent' files. Change-Id: Idc890cac4bb6aed4e36c3556a2abc0744fd086df Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88770 Tested-by: Jenkins Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
2020-02-12clang-analyzer-deadcode.DeadStoresNoel Grandin
Change-Id: Ifa384933569b27d0d08eb479bb95b799163ae386 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88450 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-02-08move some headers inside basicNoel Grandin
Change-Id: If711825c36bd4f9836fcd3ba26e5d4f38a5f3e36 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88166 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-02-01make update_pch also consider files in <module>/src/**/incLuboš Luňák
With --enable-pch=full there's not much difference between a "public" header in <module>/inc and a private one in <module>/src/somewhere/inc . And since the script searches recursively, this apparently helps to find even more headers for lower pch levels. Change-Id: I8483d0aa5b4fea5a59107c20a8aa5f1ef694af0a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87799 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2020-01-31new loplugin:namespaceindentationNoel Grandin
check indentation of braces in namespace decls, and the comments that often appear with them. This is my penance for messing up the indentation with clang-tidy-modernize-namespaces. As such I have limited it to new-style namespaces for now, and the check is off by default. Change-Id: I4db7f10a81c79bc0eece8f8e3ee564da8bc7f168 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87723 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-28New loplugin:unsignedcompareStephan Bergmann
"Find explicit casts from signed to unsigned integer in comparison against unsigned integer, where the cast is presumably used to avoid warnings about signed vs. unsigned comparisons, and could thus be replaced with o3tl::make_unsigned for clairty." (compilerplugins/clang/unsignedcompare.cxx) o3tl::make_unsigned requires its argument to be non-negative, and there is a chance that some original code like static_cast<sal_uInt32>(n) >= c used the explicit cast to actually force a (potentially negative) value of sal_Int32 to be interpreted as an unsigned sal_uInt32, rather than using the cast to avoid a false "signed vs. unsigned comparison" warning in a case where n is known to be non-negative. It appears that restricting this plugin to non- equality comparisons (<, >, <=, >=) and excluding equality comparisons (==, !=) is a useful heuristic to avoid such false positives. The only remainging false positive I found was 0288c8ffecff4956a52b9147d441979941e8b87f "Rephrase cast from sal_Int32 to sal_uInt32". But which of course does not mean that there were no further false positivies that I missed. So this commit may accidentally introduce some false hits of the assert in o3tl::make_unsigned. At least, it passed a full (Linux ASan+UBSan --enable-dbgutil) `make check && make screenshot`. It is by design that o3tl::make_unsigned only accepts signed integer parameter types (and is not defined as a nop for unsigned ones), to avoid unnecessary uses which would in general be suspicious. But the STATIC_ARRAY_SELECT macro in include/oox/helper/helper.hxx is used with both signed and unsigned types, so needs a little oox::detail::make_unsigned helper function for now. (The ultimate fix being to get rid of the macro in the first place.) Change-Id: Ia4adc9f44c70ad1dfd608784cac39ee922c32175 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87556 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-01-26rename some local variablesNoel Grandin
mostly to make the job of my very aggressive unused local vars plugin easier Change-Id: Ifc21a920841f8589f8b7e10de39dba6622a5d501 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87399 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-24loplugin:makeshared in basctl..canvasNoel Grandin
Change-Id: I1461da594db222abbaeccfb636194b9790f5dbe8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87271 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-21Use deleteDirRecursively from comphelperSamuel Mehrbrodt
Change-Id: I4ad1226e5b08fc3abbf94440ea435fc9109005b3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87081 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2020-01-16can use LogicToLogic hereCaolán McNamara
Change-Id: Ibb9b9d01baa2cf9e6635dc3707ccc53e5fa7166e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86890 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-01-16drop Application::GetAppWindowCaolán McNamara
Change-Id: I8f1640b0ed816101305a893646de8ed9750d1247 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86889 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2020-01-14clang-tidy modernize-concat-nested-namespace in basic..canvasNoel Grandin
Change-Id: I74a575e6ca7829ee252c0e315fc337ea223c944f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86758 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-14loplugin:finalclasses in basic..emfioNoel Grandin
Change-Id: I1b0df1a6cb5b8db9db09cb1d55d932459ab16d81 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86741 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-10use more std::make_sharedNoel Grandin
found using 'git grep', I tried using clang-tidy, but it only successfully found a tiny fraction of these Change-Id: I61c7d85105ff7a911722750e759d6641d578da33 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86526 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>