[PATCH 2/2] msi: automation: Implement Installer::RegistryValue.

Misha Koshelev mk144210 at bcm.edu
Thu May 10 15:42:31 CDT 2007


On Thu, 2007-05-10 at 12:13 +0200, Alexandre Julliard wrote:
> Misha Koshelev <mk144210 at bcm.edu> writes:
> 
> > +                    case VT_BSTR:   /* Return value of specified key if it exists */
> > +                        if (ret == ERROR_SUCCESS)
> > +                        {
> > +                            ret = RegQueryValueExW(hkey, V_BSTR(&varg2), NULL, NULL, NULL, &dwSize);
> > +                            if (ret == ERROR_SUCCESS)
> > +                            {
> > +                                szString = msi_alloc(dwSize);
> > +                                if (szString)
> > +                                {
> > +                                    LPWSTR szNewString = NULL;
> > +                                    DWORD dwType, dwNewSize = 0;
> > +                                    int idx;
> > +
> > +                                    ret = RegQueryValueExW(hkey, V_BSTR(&varg2), NULL, &dwType, (LPBYTE)szString, &dwSize);
> > +                                    switch (dwType)
> > +                                    {
> > +                                        /* Registry strings may not be null terminated */
> > +                                        case REG_MULTI_SZ:
> > +                                            idx = (dwSize/sizeof(WCHAR))-1;
> > +                                            while (idx >= 0 && !szString[idx]) idx--;
> > +                                            for (; idx >= 0; idx--)
> > +                                                if (!szString[idx]) szString[idx] = '\n';
> > [...]
> 
> This stuff clearly needs to be split out into a few helper functions.
> 

Just sent a new one, mainly with one additional helper function and some
if/else condensation. Please let me know if you believe I need to make
more helpers.

Thank you.

Misha



More information about the wine-devel mailing list