tdf#163033 sc: fix crash when copying comment to another ScDocument

Fixes a crash that started with
7.6.0.2 commit eec038b982b4672ac8feb030cb6bae546fa8c901

The crash occurred when comments were copied (without cloning)
to another document and then the source document was closed,
removing access to the (uncloned) comment.

Also took the opportunity to put the (minutely) most expensive
comparison at the end of the if clause.

Change-Id: Ia5c1313aa17550f760d5f870c566f06b7abd598b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178394
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
This commit is contained in:
Justin Luth
2024-12-13 13:30:38 +01:00
parent 9948c2ed03
commit 6edc10c6b0
+3 -2
View File
@@ -470,8 +470,9 @@ ScPostIt::~ScPostIt()
std::unique_ptr<ScPostIt> ScPostIt::Clone( const ScAddress& rOwnPos, ScDocument& rDestDoc, const ScAddress& rDestPos, bool bCloneCaption ) const
{
// tdf#117307: Don't clone comment, if it is in the same position
if ( (rOwnPos == rDestPos) && !mrDoc.IsClipboard() )
// tdf#117307: Don't clone comment, if it is in the same position in the same document
const bool bIsSameDoc = mrDoc.GetPool() == rDestDoc.GetPool();
if (bIsSameDoc && !mrDoc.IsClipboard() && rOwnPos == rDestPos)
bCloneCaption = false;
CreateCaptionFromInitData( rOwnPos );
sal_uInt32 nPostItId = comphelper::LibreOfficeKit::isActive() ? 0 : mnPostItId;