- abstract base class reduces boilerplate
- Pimpl is pointless here, except for SolarMutex, which is handled by
overriding release
Change-Id: Ia08dc26104f70411a783ade681be3bcebb3b9acb
- abstract base class reduces boilerplate
- Pimpl is pointless here, except for SolarMutex, which is handled by
overriding release
Change-Id: I55df9b20c9b0a78412535f2cca37e04ddaccb5cf
- abstract base class reduces boilerplate
- Pimpl is pointless here, except for SolarMutex, which is handled by
overriding release
Change-Id: I191dc0fecd25937f41fd724355e88c04da89db61
If "EmbeddedDatabase" in test.odt refers test.ods in the same directory,
that will be "../../test.ods". Now if we save test.odt in a different
directory, we need to re-save the embedded data source definition,
otherwise the relative reference will resolve to a non-existing path.
Relative references are normally not supported for embedded objects, so
this is not a problem, but for data sources they are, that's why they
are a special case here.
Change-Id: Id138b9cdc38f2de589d9b80c66f1a61174699770
Modify createTestEnvironment so that it throws Exception. This
is appropriate for unit testing.
The wrapping adds no value and the calling method already has
a catch(Exception) to handle anything.
Change-Id: I430a414f63d2cbfc3b65ecfde0285509265e5192
This is more of the horror where the table in the frame has its cells out of
visual sequence, extend the previous fix of this kind to accept cells within
the original unmodified selected range
Change-Id: I6e8220f712fe9de5d4b98fb3cb5ed67e3762e929
Running e.g. CppunitTest_sw_ooxmlexport under UBSan revealed problems with
SwBorderAttrs instances with dangling pOwner pointers, which caused bad memory
access during exit when ~SwCache calling ~SwBorderAttrs tried to use pOwner.
The problem started with a4dee94afed9ade6ac50237c8d99a6e49d3bebc1 "tdf#91260:
allow textboxes extending beyond the page bottom" (and hadn't changed with
follow-up 2f779fc046c9afec04b4a4500b213e77aee51ae1 "tdf#91260: cleanup -
textboxes extending beyond the page"): The call to
pFrameFormat->SetFormatAttr(aSize);
in SwAnchoredObjectPosition::_ImplAdjustVertRelPos ultimately calls
SwCache::DeleteObj on the SwBorderAttrs instance that is locked by the
SwBorderAttrAccess aAccess( SwFrm::GetCache(), this );
down the call stack in SwFlyFreeFrm::MakeAll. That means that
SwCache::DeleteObj will return early without doing anything (apart from
triggering the OSL_ENSURE "SwCache::Delete: object is locked."), leading to this
leftover SwBorderAttrs instance causing trouble during ~SwCache.
The scope of aAccess in SwFlyFreeFrm::MakeAll had always extended well past the
uses of rAttrs (= *aAccess.Get()), covering also the
if ( !mbValidPos )
block (that contains the call to MakeObjPos leading to the call of
SwAnchoredObjectPosition::_ImplAdjustVertRelPos), ever since
84a3db80b4fd66c6854b3135b5f69b61fd828e62 "initial import."
With cb19042f4395c97d123a27c6960d5e30d666c010 "New feature: vertical alignment
for text frames: Layout part," an additional use of rAttrs (in
MakeContentPos( rAttrs )) had been added after the block calling MakeObjPos.
The hope is that (1) it is OK to release aAccess earlier, after any (original)
uses of rAttrs, but before the call to MakeObjPos; and (2) it is OK to just set
up a second aAccess/rAttrs for the later added use of rAttrs in the call to
MakeContentPos. (That is, to punch a hole into the aAccess scope, so that
ultimately SwCache::DeleteObj succeeds on a now-unlocked SwBorderAttrs.)
Change-Id: I7cb9919b1c9d7c87464ac3a0fe1edfed5b46e122
Use G_GNUC_CONST that adds const function attribute to
lok_doc_view_get_type() for better performance.
Change-Id: Id79f0395a98c4f98b46303e9b5ee1e103fbe331f