Fixed the WriteEnvironmentStrings action [try2]

Dmitry Timoshkov dmitry at codeweavers.com
Wed Jun 13 23:07:22 CDT 2007


"James Hawkins" <truiken at gmail.com> wrote:

> +    while (*cptr && (*cptr == '=' || *cptr == '+' ||
> +           *cptr == '-' || *cptr == '!' || *cptr == '*'))
> +    {
> +        switch (*cptr)
> +        {
> +        case '=':
> +            *flags |= ENV_ACT_SETALWAYS;
> +            break;
> +        case '+':
> +            *flags |= ENV_ACT_SETABSENT;
> +            break;
> +        case '-':
> +            *flags |= ENV_ACT_REMOVE;
> +            break;
> +        case '!':
> +            *flags |= ENV_ACT_REMOVEMATCH;
> +            break;
> +        case '*':
> +            *flags |= ENV_MOD_MACHINE;
> +            break;
> +        default:
> +            ERR("Unknown Environment flag: %c\n", *cptr);
> +            return ERROR_FUNCTION_FAILED;
> +        }
> +
> +        cptr++;
> +        (*name)++;
> +    }

A simple 'goto' in the 'default:' case, or using

while (*cptr)
{
    if (*cptr == '=')
    else if (*cptr == '+')
    {
    }
    else if (...)
    {
    }
    else
        break;
}

would help to avoid double comparisons and simplify the code.

-- 
Dmitry.



More information about the wine-devel mailing list