Bug in ngx_slab.c ?
Maxim Dounin
mdounin at mdounin.ru
Sun Feb 7 00:44:32 MSK 2010
Hello!
On Sat, Feb 06, 2010 at 02:20:36PM -0500, double wrote:
> Hello,
>
> In "ngx_slab.c":
>
>
> static ngx_uint_t ngx_slab_max_size;
> [...]
> void ngx_slab_init(ngx_slab_pool_t *pool)
> {
> if (ngx_slab_max_size == 0) {
>
>
> Could one be sure, that "ngx_slab_max_size" is always "0"?
> Maybe better:
>
>
> static ngx_uint_t ngx_slab_max_size = 0;
Here is the explication from ISO C standard (6.7.8 Initialization):
% 10. If an object that has automatic storage duration is not initialized
% explicitly, its value is indeterminate. If an object that has static storage
% duration is not initialized explicitly, then:
%
% — if it has pointer type, it is initialized to a null pointer;
% — if it has arithmetic type, it is initialized to (positive or unsigned)
% zero;
% — if it is an aggregate, every member is initialized (recursively) according
% to these rules;
% — if it is a union, the first named member is initialized (recursively)
% according to these rules.
Guess which storage duration ngx_slab_max_size has? If in doubt,
refer to "6.2.4 Storage durations of objects" chapter of the same
standard.
Maxim Dounin
More information about the nginx
mailing list