wshom: Basic support for REG_SZ values in RegRead()

Jacek Caban jacek at codeweavers.com
Mon Dec 3 05:42:14 CST 2012


Hi Nikolay,

On 12/03/12 12:29, Nikolay Sivov wrote:
> +    /* skip '\' after root name */
> +    if (name[len] == '\\') len++;

It looks like if name[len] != '\\', then name should be considered invalid.

> +
> +    val = strlenW(name);
> +    while (name[--val] != '\\' && val)
> +        ;
> +    keyname = SysAllocStringLen(&name[len], val-len);

This won't work if name has no backslashes.


> +    /* skip leading '\' */
> +    val++;
> +
> +    type = REG_NONE;
> +    datalen = 0;
> +    ret = RegGetValueW(root, keyname, &name[val], RRF_RT_ANY, &type, NULL, &datalen);
> +    if (ret == ERROR_SUCCESS)
> +    {
> +        if (type == REG_SZ)
> +        {
> +            V_VT(value) = VT_BSTR;
> +            V_BSTR(value) = SysAllocStringLen(NULL, datalen-1);
> +            ret = RegGetValueW(root, keyname, &name[val], RRF_RT_ANY, &type, V_BSTR(value), &datalen);
> +        }
> +        else
> +            FIXME("type %d not handled\n", type);

This should return an error.

Jacek



More information about the wine-devel mailing list