[cairo] [PATCH} fixing memory leak with cairo_win32_device (Bug 67171)

Fred Beca fredbca21 at gmail.com
Wed Apr 6 08:02:05 UTC 2016


Thank you. The patch has been attached to the bug.

On Wed, Apr 6, 2016 at 12:51 AM, Adrian Johnson <ajohnson at redneon.com>
wrote:

> On 05/04/16 19:52, Fred Beca wrote:
> > Hi,
> >
> > There have been a memory leak on win32 platform for a while because of
> > the static __cairo_win32_device object that is never released
> > (see https://bugs.freedesktop.org/show_bug.cgi?id=67171)
> >
> > Please find attached a simple patch that fixes the problem by adding a
> > win32-specific cleanup call in the cairo_debug_reset_static_data
> > function. I hope it can be added to the official release to remove the
> leak.
>
> If you could add the patch to bug 67171 and I will test and commit it
> next time I am working on the windows backend.
>
> >
> > Regards,
> >
> > Fred
> >
> > Index: cairo-debug.c
> > ===================================================================
> > --- cairo-debug.c(cairo-1.14.6)
> > +++ cairo-debug.c(working copy)
> > @@ -89,7 +89,9 @@
> >  #if CAIRO_HAS_DRM_SURFACE
> >      _cairo_drm_device_reset_static_data ();
> >  #endif
> > -
> > +#if CAIRO_HAS_WIN32_SURFACE
> > +    _cairo_win32_device_reset_static_data ();
> > +#endif
> >      _cairo_default_context_reset_static_data ();
> >
> >  #if CAIRO_HAS_COGL_SURFACE
> > Index: cairoint.h
> > ===================================================================
> > --- cairoint.h(cairo-1.14.6)
> > +++ cairoint.h(working copy)
> > @@ -442,6 +442,11 @@
> >  cairo_private void
> >  _cairo_win32_font_reset_static_data (void);
> >
> > +#if CAIRO_HAS_WIN32_SURFACE
> > +cairo_private void
> > +_cairo_win32_device_reset_static_data (void);
> > +#endif
> > +
> >  #if CAIRO_HAS_COGL_SURFACE
> >  void
> >  _cairo_cogl_context_reset_static_data (void);
> > Index: win32/cairo-win32-device.c
> > ===================================================================
> > --- win32/cairo-win32-device.c(cairo-1.14.6)
> > +++ win32/cairo-win32-device.c(working copy)
> > @@ -187,3 +187,12 @@
> >
> >      return flags;
> >  }
> > +
> > +void _cairo_win32_device_reset_static_data (void)
> > +{
> > +     if (__cairo_win32_device != NULL) {
> > +cairo_device_t *device = __cairo_win32_device;
> > +__cairo_win32_device = NULL;
> > +cairo_device_destroy (device);
> > +    }
> > +}
> >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cairographics.org/archives/cairo/attachments/20160406/140fd00b/attachment.html>


More information about the cairo mailing list