Am 20.04.2012 23:18, schrieb Chase Douglas: > XauFileName() may allocate and return a static buffer. The only > way to ensure it is freed is to deallocate it when the program exits. > > Signed-off-by: Chase Douglas <chase.doug...@canonical.com> > --- > AuFileName.c | 17 ++++++++++++++++- > 1 files changed, 16 insertions(+), 1 deletions(-) > > diff --git a/AuFileName.c b/AuFileName.c > index f384f75..bc7b177 100644 > --- a/AuFileName.c > +++ b/AuFileName.c > @@ -31,13 +31,22 @@ in this Software without prior written authorization from > The Open Group. > #include <X11/Xos.h> > #include <stdlib.h> > > +static char *buf = NULL; > + > +static void > +free_filename_buffer(void) > +{ > + free(buf); > + buf = NULL; > +} > + > char * > XauFileName (void) > { > const char *slashDotXauthority = "/.Xauthority"; > char *name; > - static char *buf; > static int bsize; > + static int atexit_registered = 0; > #ifdef WIN32 > char dir[128]; > #endif > @@ -64,6 +73,12 @@ XauFileName (void) > buf = malloc ((unsigned) size); > if (!buf) > return NULL; > + > + if (!atexit_registered) { > + atexit(free_filename_buffer); > + atexit_registered = 1; > + } > + > bsize = size; > } > strcpy (buf, name);
Is XauFileName() a case for Xasprintf() ? re, wh _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel