Outlook crashes when you call IMAPIProp::GetProps on a stale MAPIOBJECT
Original KB number: 4131515
Symptoms
Consider the following scenario:
- You create an email message by using Microsoft Outlook.
- You attach an existing email message to the new message.
- You open the attached message for viewing.
- You use the NewInspector event to get a reference to the current Outlook.MailItem that corresponds to the email attachment that you just opened.
- From the MailItem object, you get a reference to the underlying MAPI object by reading the MAPIOBJECT property in C++.
- You save the message or Outlook initiates an AutoSave operation.
- You start the GetProps method on an IMAPIProp reference from the
MAPIOBJECT
reference that you obtained through the NewInspector event.
In this scenario, Outlook crashes.
Cause
The MAPI object that you obtained from the MAPIOBJECT
property has become stale and is no longer usable. You should not reuse the property if the corresponding Outlook item has changed.
Resolution
Every time that you have to run an operation on the MAPI object that maps to an Outlook or Outlook Object Model item, you should get a new reference to the underlying MAPI object. Then, run any MAPI operations on that new reference instead of on a stale reference that might no longer be valid. Using a stale reference might cause unexpected behavior and crash the Outlook client.
More information
We recommend that you don't hold onto any MAPIOBJECT
references that you obtained through the Outlook Object Model for longer than necessary. This is because the underlying object is frequently subject to change. Using a stale underlying object might cause unexpected errors.
This applies to all scenarios in which you might have to get a MAPIOBJECT
reference through the Outlook Object Model, not only the scenario that is mentioned in the "Symptoms" section.
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for