Mail Archives: cygwin/2006/03/15/15:39:58
I believe I have found a memory leak in the Cygwin version of
vsnprintf(). If it is called with a NULL 'str' parameter and a 0
'length', it leaks a BUFSIZ-sized buffer. (Per C99 and SUSv3, calling
vsnprintf() with a NULL 'str' and 0 'length' is a way to find out how
big the formatted string would be without actually storing it anywhere.)
I see that Cygwin's vsnprintf() comes from newlib. Should I report this
to them instead?
Here is an example program:
#include <stdio.h>
#include <stdarg.h>
int
waste_it(char *fmt, ...)
{
int ns;
va_list a;
va_start(a, fmt);
ns = vsnprintf(NULL, 0, fmt, a);
va_end(a);
return ns;
}
main(int argc, char *argv[])
{
int i;
int n;
for (i = 0; i < 10000; i++) {
n += waste_it("%s foo %d", "hello", 49);
}
}
This program will consume quite a lot of memory on Cygwin.
--
pdm
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -