Erich Hoover <ehoo...@mines.edu> writes:

> +    /* Build an X cursor out of all of the frames */
> +    if (!(images = pXcursorImagesCreate( nFrames ))) goto cleanup;
> +    for (images->nimage = 0; images->nimage < nFrames; images->nimage++)
> +        images->images[images->nimage] = imgs[images->nimage];
>      wine_tsx11_lock();
> -    cursor = pXcursorImageLoadCursor( gdi_display, image );
> -    pXcursorImageDestroy( image );
> +    cursor = pXcursorImagesLoadCursor( gdi_display, images );
>      wine_tsx11_unlock();
> +    pXcursorImagesDestroy( images ); /* Note: XcursorImagesDestroy is called 
> on each frame */

The note isn't clear, does it destroy the individual images or not?
Either way your cleanup code needs more work.

> +cleanup:
> +    /* Cleanup all of the resources used to obtain the frame data */
> +    if (imgs && !cursor)
> +    {
> +        int i;
> +
> +        for (i = 0; i < nFrames; i++)
> +            pXcursorImageDestroy( image );

And this can't possibly work.

-- 
Alexandre Julliard
julli...@winehq.org


Reply via email to