[PATCH 5/5] GetCrtcGamma: Fix error handling.

Adam Jackson ajax at redhat.com
Mon Nov 9 14:56:25 PST 2009


We didn't treat _XReply failure as fatal.  Parsing an xError as a gamma
ramp reply doesn't work that often.

Signed-off-by: Adam Jackson <ajax at redhat.com>
---
 src/XrrCrtc.c |   11 +++++------
 1 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/XrrCrtc.c b/src/XrrCrtc.c
index 3f048e2..697987a 100644
--- a/src/XrrCrtc.c
+++ b/src/XrrCrtc.c
@@ -179,7 +179,7 @@ XRRGetCrtcGamma (Display *dpy, RRCrtc crtc)
     XExtDisplayInfo	    *info = XRRFindDisplay(dpy);
     xRRGetCrtcGammaReply    rep;
     xRRGetCrtcGammaReq	    *req;
-    XRRCrtcGamma	    *crtc_gamma;
+    XRRCrtcGamma	    *crtc_gamma = NULL;
     long    		    nbytes;
     long    		    nbytesRead;
 
@@ -192,7 +192,7 @@ XRRGetCrtcGamma (Display *dpy, RRCrtc crtc)
     req->crtc = crtc;
 
     if (!_XReply (dpy, (xReply *) &rep, 0, xFalse))
-	rep.status = RRSetConfigFailed;
+	goto out;
 
     nbytes = (long) rep.length << 2;
     
@@ -204,9 +204,7 @@ XRRGetCrtcGamma (Display *dpy, RRCrtc crtc)
     if (!crtc_gamma)
     {
 	_XEatData (dpy, (unsigned long) nbytes);
-	UnlockDisplay (dpy);
-	SyncHandle ();
-	return NULL;
+	goto out;
     }
     _XRead16 (dpy, crtc_gamma->red, rep.size * 2);
     _XRead16 (dpy, crtc_gamma->green, rep.size * 2);
@@ -214,7 +212,8 @@ XRRGetCrtcGamma (Display *dpy, RRCrtc crtc)
     
     if (nbytes > nbytesRead)
 	_XEatData (dpy, (unsigned long) (nbytes - nbytesRead));
-    
+
+out:
     UnlockDisplay (dpy);
     SyncHandle ();
     return crtc_gamma;
-- 
1.6.5.2



More information about the xorg-devel mailing list