[PATCH 2/5] msi/tests: Test deferral of MsiPublishAssemblies and MsiUnpublishAssemblies.
Hans Leidekker
hans at codeweavers.com
Thu May 24 03:10:27 CDT 2018
On Wed, 2018-05-23 at 17:38 -0500, Zebediah Figura wrote:
> On 23/05/18 03:30, Hans Leidekker wrote:
> > On Tue, 2018-05-22 at 18:39 -0500, Zebediah Figura wrote:
> > > Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
> > > ---
> > > dlls/msi/tests/action.c | 14 ++++++++++++
> > > dlls/msi/tests/custom.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++
> > > dlls/msi/tests/custom.spec | 2 ++
> > > 3 files changed, 69 insertions(+)
> >
> > This produces warnings here (gcc 6.3.0):
> >
> > custom.c: In function ‘pa_present’:
> > custom.c:75:31: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
> > #define todo_wine_if(is_todo) for (winetest_start_todo(is_todo); \
> > ^
> > custom.c:75:31: note: in definition of macro ‘todo_wine_if’
> > #define todo_wine_if(is_todo) for (winetest_start_todo(is_todo); \
> > ^~~
> > custom.c:1415:5: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘for’
> > RegCloseKey(key);
> > ^~~~~~~~~~~
> > custom.c: In function ‘pa_absent’:
> > custom.c:75:31: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
> > #define todo_wine_if(is_todo) for (winetest_start_todo(is_todo); \
> > ^
> > custom.c:75:31: note: in definition of macro ‘todo_wine_if’
> > #define todo_wine_if(is_todo) for (winetest_start_todo(is_todo); \
> > ^~~
> > custom.c:1431:9: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘for’
> > RegCloseKey(key);
> > ^~~~~~~~~~~
> >
> > Adding braces as in the other functions gets rid of the warnings.
> >
> I guess I could add braces, but I'm not sure why it shouldn't work
> as-is. I just copied those macros from wine/test.h, and I don't
> understand why they would work normally but not here. Could someone
> please enlighten me?
This is what it looks like after preprocessing:
UINT __attribute__((__stdcall__)) __attribute__((__force_align_arg_pointer__)) pa_present(MSIHANDLE hinst)
{
...
for (winetest_start_todo(!MsiGetMode(hinst, MSIRUNMODE_SCHEDULED)); winetest_loop_todo(); winetest_end_todo())
check_reg_str(hinst, key, name_dotnet, "rcHQPHq?CA at Uv-XqMI1e>Z'q,T*76M@=YEg6My?~]");
RegCloseKey(key);
This indentation (supposedly) suggests that the RegCloseKey(key) call should be
inside the 'for' body.
If I add braces:
UINT __attribute__((__stdcall__)) __attribute__((__force_align_arg_pointer__)) pa_present(MSIHANDLE hinst)
{
...
for (winetest_start_todo(!MsiGetMode(hinst, MSIRUNMODE_SCHEDULED)); winetest_loop_todo(); winetest_end_todo()) {
check_reg_str(hinst, key, name_dotnet, "rcHQPHq?CA at Uv-XqMI1e>Z'q,T*76M@=YEg6My?~]");
}
RegCloseKey(key);
or if I indent like this:
UINT __attribute__((__stdcall__)) __attribute__((__force_align_arg_pointer__)) pa_present(MSIHANDLE hinst)
{
...
for (winetest_start_todo(!MsiGetMode(hinst, MSIRUNMODE_SCHEDULED)); winetest_loop_todo(); winetest_end_todo())
check_reg_str(hinst, key, name_dotnet, "rcHQPHq?CA at Uv-XqMI1e>Z'q,T*76M@=YEg6My?~]");
RegCloseKey(key);}
the warning goes away. Does that answer your question?
More information about the wine-devel
mailing list