[v2 PATCH] d3dx9_36: Stop crash when displaying effect errors

Matteo Bruni matteo.mystral at gmail.com
Tue Jun 28 11:58:50 CDT 2016


2016-06-22 13:10 GMT+02:00 Alistair Leslie-Hughes <leslie_alistair at hotmail.com>:

>              if (temp_errors)
> -                TRACE("%s\n", (char *)ID3D10Blob_GetBufferPointer(temp_errors));
> +            {
> +                const char *p = ID3D10Blob_GetBufferPointer(temp_errors);
> +                SIZE_T size = ID3D10Blob_GetBufferSize(temp_errors);
> +                const char *end = p + size;
> +                const char *line = p;
> +
> +                while (p != end)
> +                {
> +                    if (*p == '\n')
> +                    {
> +                        UINT len = p - line;
> +                        if (len && *(p - 1) == '\r') --len;
> +                        TRACE("%s\n", debugstr_an(line, len));
> +                        line = ++p;
> +                    }
> +                    else ++p;
> +                }
> +                if (line != p)
> +                    TRACE("%s\n", debugstr_an(line, p - line));
> +            }

This only breaks at '\n', which might still be too much if the lines
are particularly long.

I also wrote a patch for this a few days ago. I'm going to send it to
wine-patches in a bit, I'd appreciate if you can test if it works for
you or point out any issue with it.



More information about the wine-devel mailing list