[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Qemu-trivial] [PATCH] os-win32.c : fix memory leak
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [Qemu-trivial] [PATCH] os-win32.c : fix memory leak |
Date: |
Thu, 24 Nov 2011 10:27:12 +0000 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, Nov 24, 2011 at 05:15:30PM +0800, Mark wrote:
> If you free the string, it will cause the environment variable unavailable.
> More details please see the following text extracted from manual of
> "putenv":
>
> The libc4 and libc5 and glibc 2.1.2 versions conform to SUSv2:
> the pointer string given to putenv() is used. In particular, this
> string becomes part of the environment; changing it later will
> change the environment. (Thus, it is an error is to call putenv() with
> an automatic variable as the argument, then return from the calling
> function while string is still part of the environment.) However,
> glibc 2.0-2.1.1 differs: a copy of the string is used. On the one
> hand this causes a memory leak, and on the other hand it violates
> SUSv2. This has been fixed in glibc 2.1.2.
I don't think this matters since os-win32.c is only built for mingw,
which uses the Microsoft C runtime and not glibc.
However, there is no documentation for putenv(3) on MSDN because the
function has been deprecated :(. So I think the safest thing to do is
to assume this will leak memory but we are not allowed to free the
string.
Either you could investigate the new _putenv(3) and test the Windows
build to make sure it works. Or you could send a patch that adds a
comment explaining why there is a memory leak here.
Stefan