Re: ngx_snprintf не ставит '\0' в конце строки
Peter Leonov
gojpeg at gmail.com
Mon May 18 15:29:56 MSD 2009
Большое спасибо, пойду запишу.
С памятью в энжинксе все вообще шикарно — это первое, что меня в нем
поразило.
Теперь, когда вижу в других проектах простой malloc, трясет всего
насквозь :)
On 18.05.2009, at 3:19, Maxim Dounin wrote:
> Hello!
>
> On Mon, May 18, 2009 at 02:33:59AM +0400, Peter Leonov wrote:
>
>> Здравствуйте.
>>
>> Понимаю так, что вызывающая ngx_snprintf() строна сама должна
>> позаботиться о терминаторе в случае, когда он нужен. Верно понимаю?
>
> Нет. Если нужен '\0' - надо в явном виде его попросить. Это
> делается через %Z.
>
>> А в общем, функции ngx_*printf() были созданы для того, чтобы было
>> легко
>> печатать встроенные в энжи типы данных? Или они служат достижению
>> других
>> целей?
>
> Да. Плюс они не занимаются печатью '\0' там где это не надо, и не
> делают abort() при нехватке памяти (точнее - вообще не пытаются
> выделять память).
>
> Maxim Dounin
>
On 18.05.2009, at 10:05, Igor Sysoev wrote:
> On Mon, May 18, 2009 at 02:33:59AM +0400, Peter Leonov wrote:
>
>> Здравствуйте.
>>
>> Понимаю так, что вызывающая ngx_snprintf()
>> строна сама должна позаботиться о
>> терминаторе в случае, когда он нужен.
>> Верно понимаю?
>
> %Z
>
>> А в общем, функции ngx_*printf() были созданы
>> для того, чтобы было легко печатать
>> встроенные в энжи типы данных? Или они
>> служат достижению других целей?
>
> На самом деле, он был создан, чтобы печать ставшие стандартными типы
> C:
> off_t, time_t, size_t, pid_t, etc. Когда-то configure подбирала для
> них %lld
> и прочая. Потом я плюнул и сделал ngx_snprintf(), заодно добавив туда
> nginx'овских типов. Минус ровно один - при использовании родного
> sprintf()
> icc (не знаю, как другие сейчас) умеет предупреждать о
> несоответствии типа
> параметру.
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
--
С уважением,
Петр Леонов.
More information about the nginx-ru
mailing list