On Thu, Mar 24, 2011 at 11:09:36 -0700, Keith Packard wrote: > diff --git a/src/intel_dri.c b/src/intel_dri.c > index 3b80823..f7a4fc4 100644 > --- a/src/intel_dri.c > +++ b/src/intel_dri.c > @@ -625,8 +625,10 @@ i830_dri2_add_frame_event(DRI2FrameEventPtr frame_event) > if (!AddResource(frame_event->client_id, frame_event_client_type, > frame_event)) > return FALSE; > > - if (!AddResource(frame_event->drawable_id, frame_event_drawable_type, > frame_event)) > + if (!AddResource(frame_event->drawable_id, frame_event_drawable_type, > frame_event)) { > + FreeResourceByType(frame_event->client_id, > frame_event_client_type, TRUE); > return FALSE; > + } > > return TRUE; > } > @@ -705,7 +707,10 @@ I830DRI2ScheduleFlip(struct intel_screen_private *intel, > flip_info->event_data = data; > flip_info->frame = target_msc; > > - i830_dri2_add_frame_event(flip_info); > + if (!i830_dri2_add_frame_event(flip_info)) { > + free(flip_info); > + return FALSE; > + } > > /* Page flip the full screen buffer */ > back_priv = back->driverPrivate; > @@ -958,7 +963,10 @@ I830DRI2ScheduleSwap(ClientPtr client, DrawablePtr draw, > DRI2BufferPtr front, > I830DRI2ReferenceBuffer(front); > I830DRI2ReferenceBuffer(back); > > - i830_dri2_add_frame_event(swap_info); > + if (!i830_dri2_add_frame_event(swap_info)) { > + free(swap_info);
This will cause a double free as the blit_fallback path does it too. > + goto blit_fallback; > + } > > /* Get current count */ > vbl.request.type = DRM_VBLANK_RELATIVE; > Cheers, Julien _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx