Bugzilla – Attachment 47763 Details for
Bug 37974
crash when inserting footpage notes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
speculative fix
speculation.patch (text/plain), 1.08 KB, created by
Caolán McNamara
on 2011-06-09 04:39:32 UTC
(
hide
)
Description:
speculative fix
Filename:
MIME Type:
Creator:
Caolán McNamara
Created:
2011-06-09 04:39:32 UTC
Size:
1.08 KB
patch
obsolete
>diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx >index 939bbd8..489ff91 100644 >--- a/sw/source/core/doc/docbm.cxx >+++ b/sw/source/core/doc/docbm.cxx >@@ -719,6 +738,19 @@ namespace sw { namespace mark > //position as const iterator ppMark was > iterator_t aI = m_vMarks.begin(); > std::advance(aI, std::distance<const_iterator_t>(aI, ppMark)); >+ >+ //fdo#37974 >+ //a) a mark destructor may callback into this method. >+ //b) vector::erase first calls the destructor of the object, then >+ //removes it from the vector. >+ //So if the only reference to the object is the one >+ //in the vector then we may reenter this method when the mark >+ //is destructed but before it is removed, i.e. findMark still >+ //finds the object whose destructor is being run. Take a temp >+ //extra reference on the shared_ptr, remove the entry from the >+ //vector, and on xHoldPastErase release findMark won't find >+ //it anymore. >+ pMark_t xHoldPastErase = *aI; > m_vMarks.erase(aI); > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 37974
:
47588
| 47763