Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ngx_snprintf не ставит '\0' в конце строки
On Mon, May 18, 2009 at 03:29:56PM +0400, Peter Leonov wrote:
> Большое спасибо, пойду запишу.
>
> С памятью в энжинксе все вообще шикарно ? это первое, что меня в нем
> поразило.
> Теперь, когда вижу в других проектах простой 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
> >
>
> --
> С уважением,
> Петр Леонов.
>
--
Игорь Сысоев
http://sysoev.ru
|