About Xalloc()/Xfree() function used in liblbxutil library.
bernie at codewiz.org
Wed Sep 19 06:33:25 PDT 2007
Joerg Sonnenberger wrote:
> On Mon, Sep 17, 2007 at 02:01:21PM +0900, Tadashi Koike wrote:
>> On this research, I understood that Xalloc()/Xfree() are same as
>> malloc()/free() except that an memory allocation size be specified
>> as ZERO by caller. But sorry I couldn't understand a difference of
>> behavior on failure.
> malloc(0) can implement one of two behaviours according to POSIX:
> (a) It can return NULL.
> (b) It can return a unique pointer.
> It is up to the implementation which one it does. A bunch of code in X11
> depends on the second behaviour and the easiest way to force that is to
> turn malloc(0) into malloc(1). That is precisely what this code does.
Autoconf has a much cleaner way to deal with this problem.
If we check for malloc with AC_FUNC_MALLOC, it automatically
replaces it with the appropriate wrapper code.
It may be worthwhile to migrate to this mechanism, if only
to make X code look more like ordinary ANSI C to newcomers.
// Bernardo Innocenti - http://www.codewiz.org/
\X/ One Laptop Per Child - http://www.laptop.org/
More information about the xorg