[PATCH] msado15: Semi-stub _Recordset Open

Nikolay Sivov nsivov at codeweavers.com
Fri Feb 19 03:17:51 CST 2021



On 2/19/21 11:58 AM, Alistair Leslie-Hughes wrote:
> +    hr = ADOConnectionConstruction15_get_Session(construct, &session);
> +    ADOConnectionConstruction15_Release(construct);
> +    if (FAILED(hr))
> +        return E_FAIL;
> +
> +    hr = IUnknown_QueryInterface(session, &IID_IOpenRowset, (void**)&openrowset);
> +    if (FAILED(hr)) return hr;
> +
> +    hr = IOpenRowset_QueryInterface(openrowset, &IID_IDBCreateCommand, (void**)&create_command);
> +    if (FAILED(hr))
> +        goto done;
> +
> +    hr = IDBCreateCommand_CreateCommand(create_command, NULL, &IID_IUnknown, (IUnknown **)&cmd);
> +    if (FAILED(hr))
> +        goto done;
> +
> +    hr = ICommand_QueryInterface(cmd, &IID_ICommandText, (void**)&command_text);
> +    if (FAILED(hr))
> +    {
> +        FIXME("Currently only ICommandText interface is support\n");
> +        goto done;
> +    }
> +
> +    hr = ICommandText_SetCommandText(command_text, &DBGUID_DEFAULT, V_BSTR(&source));
> +    if (FAILED(hr))
> +        goto done;
> +
> +    hr = ICommandText_Execute(command_text, NULL, &IID_IUnknown, NULL, &affected, &rowset);
> +    if (FAILED(hr))
> +        goto done;
Most of that could use same pattern as get_Session(), so you don't have
to use a block of releases in 'done'.

Is it safe to assume that 'source' is VT_BSTR?



More information about the wine-devel mailing list