Re: [PATCH] locale: fix memory leaks in write_locales and write_charmaps

Ruslan Valiyev <[email protected]>
Newsgroups gmane.comp.lib.glibc.alpha
Message-ID <[email protected]>
Hi Arjun,

Thanks for the review.

> Since every invocation of this macro uses the result of an xstrdup, I
> think it would be cleaner to pass in the un-duplicated string, perform
> a GET using it, and then xstrdup only when necessary, right before
> PUT.

Done -- PUT_UNIQUE now takes the plain string and only allocates on the
insert path:

  #define PUT_UNIQUE(name) \
    do \
      { \
        const char *put_name_ = (name); \
        if (GET (put_name_) == NULL) \
          PUT (xstrdup (put_name_)); \
      } \
    while (0)

The call sites drop their xstrdup accordingly.

> While at it, there's also a whitespace issue: a missing space before
> the "\" at the end of each line.

Fixed.

> I see that it's correct to use PUT here since we are just starting,
> but it might be worth using PUT_UNIQUE everywhere just for
> consistency.

Done -- "POSIX" and "C" go through PUT_UNIQUE as well.

I also put the measured figures in the commit message: before the change
"locale -a" leaks 74 bytes in 3 blocks directly and 835 bytes in 49
blocks indirectly, and "locale -m" leaks 2190 bytes in 227 blocks.  Both
are valgrind-clean afterwards.

v2 follows, rebased onto current master.

Thanks,
Ruslan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.