<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Compilation errors with MSVC after recent changes to 'cairo-path-stroke-traps.c'"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=84908">84908</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Compilation errors with MSVC after recent changes to 'cairo-path-stroke-traps.c'
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>cairo
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows (All)
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>general
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>chris@chris-wilson.co.uk
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>johne53@tiscali.co.uk
          </td>
        </tr>

        <tr>
          <th>QA Contact</th>
          <td>cairo-bugs@cairographics.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Firstly, apologies. I'm not sure whether this needs to get filed under
'general' or under 'win32-backend' but anyway, here it is...

Since updating from git master about a week ago (ver 1.13.1) I can no longer
compile 'cairo-path-stroke-traps.c' with Microsoft VC8. I get errors at lines
302, 303, 464 and 465. As an example, line 302 looks like this:-

cairo_point_t t[] = { in->point, *inpt, *outpt }

Given that 'in->point', '*inpt' and '*outpt' are all structs, I suspect the
problem is that the compiler would need to generate a default copy c'tor for
'cairo_point_t'. MSVC does this when compiling as C++ but not when compiling as
'C'. Unfortunately, if I change my project to build as C++ I just get a whole
slew of other errors elsewhere. So currently, I can't compile as 'C', nor as
C++.

The errors at lines 302 and 303 can be fixed as follows. I'm not claiming that
my fix is the most elegant one (and of course, somebody will need to verify
that it fulfils the original intention) but it does at least compile!! If
somebody wants to come up with a more elegant solution, this should at least
tell them what's going wrong:-

1) Remove lines 302 and 303 and replace with the following code:-

cairo_point_t t[3];
cairo_point_t e[4];

memcpy( &t[0], &in->point, sizeof(cairo_point_t) );
memcpy( &t[1], inpt, sizeof(cairo_point_t) );
memcpy( &t[2], outpt, sizeof(cairo_point_t) );

memcpy( &e[0], &in->cw, sizeof(cairo_point_t) );
memcpy( &e[1], &in->ccw, sizeof(cairo_point_t) );
memcpy( &e[2], &out->cw, sizeof(cairo_point_t) );
memcpy( &e[3], &out->ccw, sizeof(cairo_point_t) );

2) It looks like the same fix would probably work for lines 464 and 465.

Hope that helps,

John</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>