Skip to content
Snippets Groups Projects
Commit f6c08d45 authored by Mike Antipov's avatar Mike Antipov
Browse files

EXT-8459 FIXED preventing crashes: 1) ensure that pointer to inventory item is...

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
parent a96f47db
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment