Austin Clements <amdragon at MIT.EDU> writes:

> +    if (consume_double_quote (&pos)) {
> +     char *out = talloc_strdup (ctx, pos);
> +     pos = *term_out = out;
> +     while (1) {

Overall the control flow here is a bit tricky to follow. I'm not sure if
a real loop condition would help or make it worse.

> +         if (! *pos) {
> +             /* Premature end of string */
> +             goto FAIL;
> +         } else if (*pos == '"') {
> +             if (*++pos != '"')
> +                 break;
> +         } else if (consume_double_quote (&pos)) {
> +             break;
> +         }

I'm confused by the asymmetry here. Quoted strings can start with
unicode quotes, but internally can only have ascii '"'? Is this
documented somewhere?

> +    } else {
> +     while (*pos > ' ' && *pos != ')')
> +         ++pos;
> +     if (*pos)
> +         goto FAIL;
> +    }

So if there is no quote, we skip the part after the ':'? I guess I
probably missed something because that doesn't sound like the intended
behaviour.

Reply via email to