Hi,

In the next few weeks, there is going to be a reduction in the number of
our memory allocator wrappers/functions, for essentially the following
reasons:
- we have too many of them,
- developers rarely know which one to use, which results in:
- developers often make mistakes[1]

This started today with the landing of bug 1138293, which effectively
removed moz_malloc, moz_realloc, moz_calloc and moz_free.

They were replaced, respectively, with malloc, realloc, calloc and free,
because that works™.

If you have pending patches that use moz_malloc, moz_realloc,
moz_calloc, moz_free, you can just remove the moz_ prefix.

The infallible moz_xmalloc, moz_xrealloc and moz_xcalloc still do exist,
and memory allocated with them can be freed with free.

With that being said, please refrain from using any of the functions
mentioned above. Please prefer the C++y new and delete. new is
infallible by default (equivalent to moz_xmalloc). If you need an
equivalent to moz_malloc, use fallible new instead:

        new (fallible) Foo()

Please note that this shouldn't make uplifting harder. Platform patches
using malloc/free/new/delete should apply and work just fine on beta,
aurora and esr (with a few exceptions ; if you uplift something from
mfbt/mozglue that uses the memory allocator, please check with me).

Cheers,

Mike


1. if you look for it, you'll find cases of one family used for
   allocation and another for deallocation, for possibly close to all
   combinations of families (NS_Alloc, nsMemory, moz_malloc, malloc,
   new).
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to