About Xalloc()/Xfree() function used in liblbxutil library.

Tadashi Koike t-koike at pop01.odn.ne.jp
Sun Sep 16 22:01:21 PDT 2007

I'm sorry for late a reply , and I thank for some suggestions
about Xalloc()/Xfree() dependence. And I thank Mr. Carsten to
try to test an allocation of Big size memory.

(Again, I am weak in English, so please forgive the error of
the English sentence)

After received suggestions, I researched Xalloc()/Xfree() defined in
libXdmcp.  That code are in lib/libXdmcp/Alloc.c . I quote these
in the last of this mail.

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.

In a library liblbxutil, Xalloc() calls at 3 parts, and 2 case of
these an allocation size was specified non ZERO (using sizeof()).
I think this number of times a little impact to rewrite the source code.
# Xrealloc() was not used in liblbxutil.

After this research, I agree with Mr. Bernardo's offer (Xalloc/Xfree
are able to replace malloc/free). In fact Xmalloc/Xfree defined in
<X11/Xlibint.h> are better to use in replacement.

I am anxious how other X developers think.

Thank you for Mr. Carsten and Mr. Bernardo. I am happy to heard
  other people's suggestions.

Sincerely yours,

  - Tadashi Koike, Japan

-- Xalloc,Xrealloc,Xfree at lib/libXdmcp/Alloc.c -------------
void *
Xalloc (unsigned long amount)
     if (amount == 0)
         amount = 1;
     return malloc (amount);

void *
Xrealloc (void *old, unsigned long amount)
     if (amount == 0)
         amount = 1;
     if (!old)
         return malloc (amount);
     return realloc ((char *) old, amount);

Xfree (void *old)
     if (old)
         free ((char *) old);

More information about the xorg mailing list