server/apreq_module_cgi.c:223: error: UNINITIALIZED_VALUE
  The value read from curarg[_] was never initialized.

server/apreq_module_cgi.c:223:21: 
221.                 
222.                 /* If old curarg was set, concat buffer with level down */
223.                 if (curarg[plevel + 1]) {
                         ^
224.                     strcpy(start, buf[plevel + 1]);
225.                     start += strlen(buf[plevel + 1]);

static char *prompt(apreq_handle_t *handle, const char *name,
                    const char *type) {
    struct cgi_handle *req = (struct cgi_handle *)handle;
    const char *defval = nullstr;
    const char *label = NULL;
    const char *cprompt;
    char buf[MAX_PROMPT_NESTING_LEVELS][MAX_BUFFER_SIZE];
    char *start, curarg[MAX_PROMPT_NESTING_LEVELS] = "";
    int plevel;
    cprompt = req->promptstr - 1;
    *buf[0] = plevel = 0;
    start = buf[0];
    while (*(++cprompt) != 0) {
        switch (*cprompt) {
        case '$':
            cprompt++;
            switch (*cprompt) {
            case 't':
                if (type != NULL) {
                    strcpy(start, type);
                    start += strlen(type);
                    curarg[plevel] = 1;
                } else {
                    curarg[plevel] = curarg[plevel] | 0;
                }
                break;
            case 'n':
                strcpy(start, name);
                start += strlen(name);
                curarg[plevel] = 1;
                break;
            case 'l':
                if (label != NULL) {
                    strcpy(start, label);
                    start += strlen(label);
                    curarg[plevel] = 1;
                } else {
                    curarg[plevel] = curarg[plevel] | 0;
                }
                break;
            case 'd':
                if (defval != NULL) {
                    strcpy(start, defval);
                    start += strlen(defval);
                    curarg[plevel] = 1;
                } else {
                    curarg[plevel] = curarg[plevel] | 0;
                }
                break;
            default:
                break;
            }
            break;
        case '(':
            if (plevel <= MAX_PROMPT_NESTING_LEVELS) {
                plevel++;
                curarg[plevel] = *buf[plevel] = 0;
                start = buf[plevel];
            }
            break;
        case ')':
            if (plevel > 0) {
                *start = 0;
                plevel--;
                start = buf[plevel] + strlen(buf[plevel]);
                if (curarg[plevel + 1]) {
                    strcpy(start, buf[plevel + 1]);
                    start += strlen(buf[plevel + 1]);
                }
                break;
            }
        case '\\':
            (void)*cprompt++;
        default:
            *start++ = *cprompt;
        }
    }
    *start = 0;
    apr_file_printf(req->sout, "%s", buf[0]);
    apr_file_gets(buf[0], MAX_BUFFER_SIZE, req->sin);
    chomp(buf[0]);
    if (strcmp(buf[0], "")) {
            return apr_pstrdup(handle->pool, buf[0]);
    }
    if (defval != nullstr)
        return apr_pstrdup(handle->pool, defval);
    return NULL;
}
['static char *prompt(apreq_handle_t *handle, const char *name,\n                    const char *type) {\n    struct cgi_handle *req = (struct cgi_handle *)handle;\n    const char *defval = nullstr;\n    const char *label = NULL;\n    const char *cprompt;\n    char buf[MAX_PROMPT_NESTING_LEVELS][MAX_BUFFER_SIZE];\n    char *start, curarg[MAX_PROMPT_NESTING_LEVELS] = "";\n    int plevel;\n    cprompt = req->promptstr - 1;\n    *buf[0] = plevel = 0;\n    start = buf[0];\n    while (*(++cprompt) != 0) {\n        switch (*cprompt) {\n        case \'$\':\n            cprompt++;\n            switch (*cprompt) {\n            case \'t\':\n                if (type != NULL) {\n                    strcpy(start, type);\n                    start += strlen(type);\n                    curarg[plevel] = 1;\n                } else {\n                    curarg[plevel] = curarg[plevel] | 0;\n                }\n                break;\n            case \'n\':\n                strcpy(start, name);\n                start += strlen(name);\n                curarg[plevel] = 1;\n                break;\n            case \'l\':\n                if (label != NULL) {\n                    strcpy(start, label);\n                    start += strlen(label);\n                    curarg[plevel] = 1;\n                } else {\n                    curarg[plevel] = curarg[plevel] | 0;\n                }\n                break;\n            case \'d\':\n                if (defval != NULL) {\n                    strcpy(start, defval);\n                    start += strlen(defval);\n                    curarg[plevel] = 1;\n                } else {\n                    curarg[plevel] = curarg[plevel] | 0;\n                }\n                break;\n            default:\n                break;\n            }\n            break;\n        case \'(\':\n            if (plevel <= MAX_PROMPT_NESTING_LEVELS) {\n                plevel++;\n                curarg[plevel] = *buf[plevel] = 0;\n                start = buf[plevel];\n            }\n            break;\n        case \')\':\n            if (plevel > 0) {\n                *start = 0;\n                plevel--;\n                start = buf[plevel] + strlen(buf[plevel]);\n                if (curarg[plevel + 1]) {\n                    strcpy(start, buf[plevel + 1]);\n                    start += strlen(buf[plevel + 1]);\n                }\n                break;\n            }\n        case \'\\\\\':\n            (void)*cprompt++;\n        default:\n            *start++ = *cprompt;\n        }\n    }\n    *start = 0;\n    apr_file_printf(req->sout, "%s", buf[0]);\n    apr_file_gets(buf[0], MAX_BUFFER_SIZE, req->sin);\n    chomp(buf[0]);\n    if (strcmp(buf[0], "")) {\n            return apr_pstrdup(handle->pool, buf[0]);\n    }\n    if (defval != nullstr)\n        return apr_pstrdup(handle->pool, defval);\n    return NULL;\n}']