[PATCH xserver 1/4] animcur: Use fixed-size screen private

Robert Morell rmorell at nvidia.com
Mon Nov 13 00:35:34 UTC 2017


On Mon, Nov 06, 2017 at 03:19:51PM -0500, Adam Jackson wrote:
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
>  render/animcur.c | 15 ++++-----------
>  1 file changed, 4 insertions(+), 11 deletions(-)
> 
> diff --git a/render/animcur.c b/render/animcur.c
> index 52e6b8b79f..0707fe7271 100644
> --- a/render/animcur.c
> +++ b/render/animcur.c
> @@ -77,12 +77,9 @@ static CursorBits animCursorBits = {
>  
>  static DevPrivateKeyRec AnimCurScreenPrivateKeyRec;
>  
> -#define AnimCurScreenPrivateKey (&AnimCurScreenPrivateKeyRec)
> -
>  #define IsAnimCur(c)	    ((c) && ((c)->bits == &animCursorBits))
>  #define GetAnimCur(c)	    ((AnimCurPtr) ((((char *)(c) + CURSOR_REC_SIZE))))
> -#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey))
> -#define SetAnimCurScreen(s,p) dixSetPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey, p)
> +#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, &AnimCurScreenPrivateKeyRec))
>  
>  #define Wrap(as,s,elt,func) (((as)->elt = (s)->elt), (s)->elt = func)
>  #define Unwrap(as,s,elt)    ((s)->elt = (as)->elt)
> @@ -101,7 +98,6 @@ AnimCurCloseScreen(ScreenPtr pScreen)
>      Unwrap(as, pScreen, RealizeCursor);
>      Unwrap(as, pScreen, UnrealizeCursor);
>      Unwrap(as, pScreen, RecolorCursor);
> -    SetAnimCurScreen(pScreen, 0);
>      ret = (*pScreen->CloseScreen) (pScreen);
>      free(as);

The free() above should be removed as well, otherwise it causes a
double-free on screen teardown.

Other than that,

Reviewed-by: Robert Morell <rmorell at nvidia.com>
Tested-by: Robert Morell <rmorell at nvidia.com>

for the series.

Thanks,
Robert

>      return ret;
> @@ -308,15 +304,13 @@ AnimCurInit(ScreenPtr pScreen)
>  {
>      AnimCurScreenPtr as;
>  
> -    if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
> +    if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN,
> +                               sizeof(AnimCurScreenRec)))
>          return FALSE;
>  
> -    as = (AnimCurScreenPtr) malloc(sizeof(AnimCurScreenRec));
> -    if (!as)
> -        return FALSE;
> +    as = GetAnimCurScreen(pScreen);
>      as->timer = TimerSet(NULL, TimerAbsolute, 0, AnimCurTimerNotify, pScreen);
>      if (!as->timer) {
> -        free(as);
>          return FALSE;
>      }
>      as->timer_set = FALSE;
> @@ -329,7 +323,6 @@ AnimCurInit(ScreenPtr pScreen)
>      Wrap(as, pScreen, RealizeCursor, AnimCurRealizeCursor);
>      Wrap(as, pScreen, UnrealizeCursor, AnimCurUnrealizeCursor);
>      Wrap(as, pScreen, RecolorCursor, AnimCurRecolorCursor);
> -    SetAnimCurScreen(pScreen, as);
>      return TRUE;
>  }
>  
> -- 
> 2.14.2
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list