Hi all,

Bug 1207245 has landed on mozilla-central.  Its main purpose in life is to
unify mozilla::RefPtr and nsRefPtr (both of which live in MFBT) into a
single RefPtr class.  This new RefPtr class, like nsRefPtr, lives at the
*global* scope, not in the mozilla:: namespace.  Follow-up patches or ideas
on how to fix this welcome; I have brute-force ideas on how to do it, but
they require large quantities of machine time.

The new RefPtr works exactly the same as the old nsRefPtr: getter_AddRefs,
interoperation with nsCOMPtr, etc.  It's worth noting that if you used
byRef with mozilla::RefPtr for (XP)COM outparam semantics, you'll have to
use getter_AddRefs now instead.  Please note that getter_AddRefs zeroes out
the pointer prior to passing it as an outparam (as it has always done),
which byRef did *not* do.  (You should not have been depending on this
behavior, but if you were...)

Updating patches/commits affected by these changes should be as simple as
running:

perl -p -i -e 's#mozilla/nsRefPtr.h#mozilla/RefPtr.h#'
perl -p -i -e 's#mozilla::RefPtr#RefPtr#'
perl -p -i -e 's#nsRefPtr<#RefPtr<#'
perl -p -i -e 's#byRef#getter_AddRefs#'

over the affected files.

As a side-effect of these changes, mozilla::RefCounted and
mozilla::external::AtomicRefCounted have moved to their own header,
mozilla/RefCounted.h.

Happy hacking,
-Nathan
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to