summaryrefslogtreecommitdiff
path: root/indra/llcommon/llrand.cpp
diff options
context:
space:
mode:
authorMike Antipov <mantipov@productengine.com>2010-07-22 12:46:57 +0300
committerMike Antipov <mantipov@productengine.com>2010-07-22 12:46:57 +0300
commitf6c08d45108d713fc42786885d1d38a4b95c10ac (patch)
treeb52419351a5c61c2db8f8287b0c27a78d8b15712 /indra/llcommon/llrand.cpp
parenta96f47db68dd52fa94bc3e9f652623583f85c60a (diff)
EXT-8459 FIXED preventing crashes: 1) ensure that pointer to inventory item is still valid when landmark is loaded from notecard and 2) adding a check for region capability
There are two reasons of the crash reported in the bug: * absence of the "CopyInventoryFromNotecard" capability in region (which leads to crash while logging of a LL_ERRS) * referencing to an invalid pointer to LLInventoryItem in callback. The first issue is fixed by preventing sending of the "CopyInventoryFromNotecard" message if it is not supported (in the "copy_inventory_from_notecard()") The second issue caused by such reason: * Notecard stores LLPointer to each embedded inventory item * When Landmark is clicked it should be opened in Places Panel and inventory item should copied into agent inventory * If it is unknown to agent it is requested and pointer (but not LLPointer!) to inventory item was bound to an appropriate callback * Then when landmark is loaded that inventory item is copied to inventory. * If notecard was closed before callback was trigged all instances to embedded inventory items were destroyed. This leads to crash when trigged callback tries to reference to bound pointer to inventory item (for landmarks) Fix is to pass LLPointer instead of pointer to inventory item into callback to ensure item is valid when it is needed. Details: * updated LLEmbeddedItems::getEmbeddedItem() to return LLPointer to inventory item (and renamed to getEmbeddedItemPtr) * updated LLViewerTextEditor::openEmbeddedItem() to get LLPointer to inventory item * updated LLViewerTextEditor::openEmbeddedLandmark() to get LLPointer to inventory item Patch also contains some more places where pointer is replaced with LLPointer to be consistent. NOTE: there are several LLViewerTextEditor::openEmbeddedXXX() methods which still get pointer to inventory item. It is safe for now because they use it synchronously. I have added a note at their declaration. Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/784/ --HG-- branch : product-engine
Diffstat (limited to 'indra/llcommon/llrand.cpp')
0 files changed, 0 insertions, 0 deletions