On Sun, Oct 15, 2006 at 02:58:00PM +0400, Alexey Tourbin wrote: > On Sun, Oct 15, 2006 at 02:42:44PM +0400, Dmitry V. Levin wrote: > > > Кстати с asprintf результат можно не проверять, вот каким образом: > > > > > > char *ptr = NULL; > > > asprintf(&ptr, fmt, ...); > > > if (ptr) { > > > ... > > > } else { > > > // asprintf failed > > > } > > > > Это не переносимо на другие дистрибутивы. У меня когда-то давно была > > растянутая во времени дискуссия в libc-alpha с Дреппером на тему > > glibc-2.5-alt-asprintf.patch, можно нагуглить. В конечном итоге меня > > поддержали все кроме Дреппера. :) > > Нет, ты с ним дискутировал о том, что asprintf должен ЗАНУЛЯТЬ ptr если > внутри пошло что-то не так (упал malloc). Нет, ты слишком узко трактуешь. > Здесь же я НЕ рассчитываю на > то, что asprintf занулит prt -- он уже занулен с самого начала; а всего > лишь на то, что при ошибке asprintf не будет его модифицировать (или же > таки занулит). Ванильный asprintf в случае ошибки оставит по адресу prt неизвестно что, например, это может быть адрес памяти, которую он использовал во время работы. -- ldv