diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec
index c8884af..8ef5001 100644
--- a/xorg-x11-server.spec
+++ b/xorg-x11-server.spec
@@ -19,7 +19,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.5.1
-Release:   4%{?dist}
+Release:   5%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X
@@ -509,6 +509,9 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Mon Oct 06 2008 Dave Airlie <airlied@redhat.com> 1.5.1-5
+- xserver-1.5.1-exa-fix-glyph-segfault.patch - fix EXA rects crash (462447)
+
 * Tue Sep 30 2008 Tom "spot" Callaway <tcallawa@redhat.com> 1.5.1-4
 - fix typo. :P
 
diff --git a/xserver-1.5.1-exa-fix-glyph-segfault.patch b/xserver-1.5.1-exa-fix-glyph-segfault.patch
new file mode 100644
index 0000000..5f393b5
--- /dev/null
+++ b/xserver-1.5.1-exa-fix-glyph-segfault.patch
@@ -0,0 +1,37 @@
+From 5ab230373909541945d373252a3f244b68a6f7af Mon Sep 17 00:00:00 2001
+From: Fedora X Ninjas <x@fedoraproject.org>
+Date: Mon, 6 Oct 2008 11:43:05 +1000
+Subject: [PATCH] exa: fix case where glyphs get flushed on last loop of previous cycle.
+
+we segfault here in exaCompositeRects as we have no source as already
+flushed just before the loop finished.
+---
+ exa/exa_glyphs.c |   12 +++++++-----
+ 1 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/exa/exa_glyphs.c b/exa/exa_glyphs.c
+index b23e7f6..2efc42d 100644
+--- a/exa/exa_glyphs.c
++++ b/exa/exa_glyphs.c
+@@ -872,11 +872,13 @@ exaGlyphs (CARD8 	 op,
+ 	list++;
+     }
+     
+-    if (maskFormat)
+-	exaGlyphsToMask(pMask, &buffer);
+-    else
+-	exaGlyphsToDst(op, pSrc, pDst, &buffer,
+-		       xSrc, ySrc, xDst, yDst);
++    if (buffer.count && buffer.source) {
++        if (maskFormat)
++	    exaGlyphsToMask(pMask, &buffer);
++        else
++	    exaGlyphsToDst(op, pSrc, pDst, &buffer,
++		           xSrc, ySrc, xDst, yDst);
++    }
+     
+     if (maskFormat)
+     {
+-- 
+1.5.5.1
+