XPCOMGC/Stack Pointers: Difference between revisions
< XPCOMGC
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 2: | Line 2: | ||
Detect every instance of nsCOMPtr that is used as a stack variable, and rewrite it to be a raw pointer. | Detect every instance of nsCOMPtr that is used as a stack variable, and rewrite it to be a raw pointer. | ||
*Remove use of getter_AddRefs with these objects. | * Remove use of getter_AddRefs with these objects. | ||
*Rewrite nsCOMPtr::swap() | * Rewrite nsCOMPtr::swap() | ||
*Remove nsCOMPtr::get() for stack vars | * Remove nsCOMPtr::get() for stack vars | ||
* Function return values & parameters are part of the stack | |||
** Rewrite already_AddRefed<Foo> return values | |||
** Rewrite nsCOMPtr &bla parameters | |||
e.g. | e.g. | ||
Revision as of 16:29, 11 October 2007
Automatic rewriting spec for XPCOMGC:
Detect every instance of nsCOMPtr that is used as a stack variable, and rewrite it to be a raw pointer.
- Remove use of getter_AddRefs with these objects.
- Rewrite nsCOMPtr::swap()
- Remove nsCOMPtr::get() for stack vars
- Function return values & parameters are part of the stack
- Rewrite already_AddRefed<Foo> return values
- Rewrite nsCOMPtr &bla parameters
e.g.
nsFoo::Function(nsISupports* gah)
{
- nsCOMPtr<nsIBar> bar;
+ nsIBar* bar;
- nsCOMPtr<nsIBaz> gahbaz = do_QueryInterface(gah);
+ nsIBaz* gahbaz = do_QueryInterface(gah);
- nsresult rv = gahbaz->GetBar(getter_AddRefs(bar));
+ nsresult rv = gahbaz->GetBar(&bar);
}