server/core_filters.c:588: error: UNINITIALIZED_VALUE
  The value read from length was never initialized.

server/core_filters.c:588:9: 
586.         nbytes += length;
587.         ctx->vec[nvec].iov_base = (void *)data;
588.         ctx->vec[nvec].iov_len = length;
             ^
589.         nvec++;
590. 

static apr_status_t send_brigade_nonblocking(apr_socket_t *s,
                                             apr_bucket_brigade *bb,
                                             core_output_filter_ctx_t *ctx,
                                             conn_rec *c)
{
    apr_status_t rv = APR_SUCCESS;
    core_server_config *conf =
        ap_get_core_module_config(c->base_server->module_config);
    apr_size_t nvec = 0, nbytes = 0;
    apr_bucket *bucket, *next;
    const char *data;
    apr_size_t length;
    for (bucket = APR_BRIGADE_FIRST(bb);
         bucket != APR_BRIGADE_SENTINEL(bb);
         bucket = next) {
        next = APR_BUCKET_NEXT(bucket);
#if APR_HAS_SENDFILE
        if (can_sendfile_bucket(bucket)) {
            if (nvec > 0) {
                (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 1);
                rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);
                if (rv != APR_SUCCESS) {
                    goto cleanup;
                }
                nbytes = 0;
                nvec = 0;
            }
            rv = sendfile_nonblocking(s, bucket, ctx, c);
            if (rv != APR_SUCCESS) {
                goto cleanup;
            }
            continue;
        }
#endif
        if (bucket->length) {
            rv = apr_bucket_read(bucket, &data, &length, APR_NONBLOCK_READ);
            if (APR_STATUS_IS_EAGAIN(rv)) {
                if (nvec) {
                    rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);
                    if (rv != APR_SUCCESS) {
                        goto cleanup;
                    }
                    nbytes = 0;
                    nvec = 0;
                }
                (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 0);
                rv = apr_bucket_read(bucket, &data, &length, APR_BLOCK_READ);
            }
            if (rv != APR_SUCCESS) {
                goto cleanup;
            }
            next = APR_BUCKET_NEXT(bucket);
        }
        if (!bucket->length) {
            if (!nvec) {
                apr_bucket_delete(bucket);
            }
            continue;
        }
        if (nvec == ctx->nvec) {
            if (nvec == NVEC_MAX) {
                (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 1);
                rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);
                if (rv != APR_SUCCESS) {
                    goto cleanup;
                }
                nbytes = 0;
                nvec = 0;
            }
            else {
                struct iovec *newvec;
                apr_size_t newn = nvec * 2;
                if (newn < NVEC_MIN) {
                    newn = NVEC_MIN;
                }
                else if (newn > NVEC_MAX) {
                    newn = NVEC_MAX;
                }
                newvec = apr_palloc(c->pool, newn * sizeof(struct iovec));
                if (nvec) {
                    memcpy(newvec, ctx->vec, nvec * sizeof(struct iovec));
                }
                ctx->vec = newvec;
                ctx->nvec = newn;
            }
        }
        nbytes += length;
        ctx->vec[nvec].iov_base = (void *)data;
        ctx->vec[nvec].iov_len = length;
        nvec++;
        if (nbytes >= conf->flush_max_threshold
                && next != APR_BRIGADE_SENTINEL(bb)
                && !is_in_memory_bucket(next)) {
            (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 1);
            rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);
            if (rv != APR_SUCCESS) {
                goto cleanup;
            }
            nbytes = 0;
            nvec = 0;
        }
    }
    if (nvec > 0) {
        rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);
    }
cleanup:
    (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 0);
    return rv;
}
['static apr_status_t send_brigade_nonblocking(apr_socket_t *s,\n                                             apr_bucket_brigade *bb,\n                                             core_output_filter_ctx_t *ctx,\n                                             conn_rec *c)\n{\n    apr_status_t rv = APR_SUCCESS;\n    core_server_config *conf =\n        ap_get_core_module_config(c->base_server->module_config);\n    apr_size_t nvec = 0, nbytes = 0;\n    apr_bucket *bucket, *next;\n    const char *data;\n    apr_size_t length;\n    for (bucket = APR_BRIGADE_FIRST(bb);\n         bucket != APR_BRIGADE_SENTINEL(bb);\n         bucket = next) {\n        next = APR_BUCKET_NEXT(bucket);\n#if APR_HAS_SENDFILE\n        if (can_sendfile_bucket(bucket)) {\n            if (nvec > 0) {\n                (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 1);\n                rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);\n                if (rv != APR_SUCCESS) {\n                    goto cleanup;\n                }\n                nbytes = 0;\n                nvec = 0;\n            }\n            rv = sendfile_nonblocking(s, bucket, ctx, c);\n            if (rv != APR_SUCCESS) {\n                goto cleanup;\n            }\n            continue;\n        }\n#endif\n        if (bucket->length) {\n            rv = apr_bucket_read(bucket, &data, &length, APR_NONBLOCK_READ);\n            if (APR_STATUS_IS_EAGAIN(rv)) {\n                if (nvec) {\n                    rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);\n                    if (rv != APR_SUCCESS) {\n                        goto cleanup;\n                    }\n                    nbytes = 0;\n                    nvec = 0;\n                }\n                (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 0);\n                rv = apr_bucket_read(bucket, &data, &length, APR_BLOCK_READ);\n            }\n            if (rv != APR_SUCCESS) {\n                goto cleanup;\n            }\n            next = APR_BUCKET_NEXT(bucket);\n        }\n        if (!bucket->length) {\n            if (!nvec) {\n                apr_bucket_delete(bucket);\n            }\n            continue;\n        }\n        if (nvec == ctx->nvec) {\n            if (nvec == NVEC_MAX) {\n                (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 1);\n                rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);\n                if (rv != APR_SUCCESS) {\n                    goto cleanup;\n                }\n                nbytes = 0;\n                nvec = 0;\n            }\n            else {\n                struct iovec *newvec;\n                apr_size_t newn = nvec * 2;\n                if (newn < NVEC_MIN) {\n                    newn = NVEC_MIN;\n                }\n                else if (newn > NVEC_MAX) {\n                    newn = NVEC_MAX;\n                }\n                newvec = apr_palloc(c->pool, newn * sizeof(struct iovec));\n                if (nvec) {\n                    memcpy(newvec, ctx->vec, nvec * sizeof(struct iovec));\n                }\n                ctx->vec = newvec;\n                ctx->nvec = newn;\n            }\n        }\n        nbytes += length;\n        ctx->vec[nvec].iov_base = (void *)data;\n        ctx->vec[nvec].iov_len = length;\n        nvec++;\n        if (nbytes >= conf->flush_max_threshold\n                && next != APR_BRIGADE_SENTINEL(bb)\n                && !is_in_memory_bucket(next)) {\n            (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 1);\n            rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);\n            if (rv != APR_SUCCESS) {\n                goto cleanup;\n            }\n            nbytes = 0;\n            nvec = 0;\n        }\n    }\n    if (nvec > 0) {\n        rv = writev_nonblocking(s, bb, ctx, nbytes, nvec, c);\n    }\ncleanup:\n    (void)apr_socket_opt_set(s, APR_TCP_NOPUSH, 0);\n    return rv;\n}']