[PATCH 6/6] d3dx9_36/tests: fixed order of parameters

Eric Pouech eric.pouech at gmail.com
Wed Sep 29 02:19:10 CDT 2021


to be complete:
gcc11 complains with:
In function 'unit_vec2',
    inlined from 'attempt_line_merge' at
/home/eric/work/wine/dlls/d3dx9_36/mesh.c:5542:5:
/home/eric/work/wine/dlls/d3dx9_36/mesh.c:5511:12: warning: 'lastdir' may
be used uninitialized [-Wmaybe-uninitialized]
 5511 |     return D3DXVec2Normalize(D3DXVec2Subtract(dir, pt2, pt1), dir);
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/eric/work/wine/include/d3dx9.h:31,
                 from /home/eric/work/wine/dlls/d3dx9_36/d3dx9_private.h:32,
                 from /home/eric/work/wine/dlls/d3dx9_36/mesh.c:31:
/home/eric/work/wine/dlls/d3dx9_36/mesh.c: In function 'attempt_line_merge':
/home/eric/work/wine/include/d3dx9math.h:352:21: note: by argument 2 of
type 'const D3DXVECTOR2 *' to 'D3DXVec2Normalize' declared here
  352 | D3DXVECTOR2* WINAPI D3DXVec2Normalize(D3DXVECTOR2 *pout, const
D3DXVECTOR2 *pv);
      |                     ^~~~~~~~~~~~~~~~~
/home/eric/work/wine/dlls/d3dx9_36/mesh.c:5527:25: note: 'lastdir' declared
here
 5527 |     D3DXVECTOR2 curdir, lastdir;
      |                         ^~~~~~~

as D3DXV2Normalize isn't symetrical in its arguments definition (first arg
is const ptr as input, while second arg is ptr as output)
so gcc11 complains about passing as first arg (being a const ptr) an
uninitialized object (it has no way of knowing that both args are aliased)

A+

On Tue, 28 Sept 2021 at 22:57, Henri Verbeet <hverbeet at gmail.com> wrote:

> On Tue, 28 Sept 2021 at 18:50, Eric Pouech <eric.pouech at gmail.com> wrote:
> >  static inline D3DXVECTOR2 *unit_vec2(D3DXVECTOR2 *dir, const
> D3DXVECTOR2 *pt1, const D3DXVECTOR2 *pt2)
> >  {
> > -    return D3DXVec2Normalize(D3DXVec2Subtract(dir, pt2, pt1), dir);
> > +    return D3DXVec2Normalize(dir, D3DXVec2Subtract(dir, pt2, pt1));
> >  }
> >
> That's arguably more readable, but note that this doesn't otherwise
> make much of a difference; D3DXVec2Subtract() returns the output
> vector, so this effectively does "D3DXVec2Normalize(dir, dir);" either
> way.
>


-- 
-- 
Eric Pouech
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20210929/f42a6389/attachment.htm>


More information about the wine-devel mailing list