Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=xorgtesting.git;a=commitdiff;h=d7cba069a6cbe4e67a3d9d102ed7aca52c190801

commit d7cba069a6cbe4e67a3d9d102ed7aca52c190801
Author: bouleetbil <bouleet...@frogdev.info>
Date:   Thu Jul 1 15:08:25 2010 +0000

xorg-server-1.8.2-1-i686
*drop useless patch

diff --git a/source/x11/xorg-server/FixFreeResource.diff 
b/source/x11/xorg-server/FixFreeResource.diff
deleted file mode 100644
index 3a81a01..0000000
--- a/source/x11/xorg-server/FixFreeResource.diff
+++ /dev/null
@@ -1,82 +0,0 @@
-From 6d7ba5e0fcb5d1bce6bb213dec009f3a0f802d26 Mon Sep 17 00:00:00 2001
-From: Kristian Høgsberg <k...@bitplanet.net>
-Date: Sat, 01 May 2010 17:07:46 +0000
-Subject: dix: Update element count in FreeResource*()
-
-FreeResource() keeps clientTable[cid].elements up to date with the
-number of resources allocated to the client.  The other free
-resource functions (FreeResourceByType(),
-FreeClientNeverRetainResources() and FreeClientResources()) don't
-maintain this invariant.
-
-Typically, the only consequence is that the element count is too high
-and we end up allocating the hash table bigger than necessary.  However,
-FreeResource() also relies on the element count to restart the search if
-the list of resources has been changed during a resource destruction
-callback.  Since FreeResourceByType() doesn't update the count, if we call
-that from a resource destruction callback from FreeResource(), the
-loop isn't restarted and we end up following an invalid next pointer.
-
-Furthermore, LookupClientResourceComplex() and
-FreeClientNeverRetainResources() don't use the element count to detect
-if a callback deleted a resource and may end up following an invalid
-next pointer if the resource system is called into recursively.
-
-Signed-off-by: Kristian Høgsberg <k...@bitplanet.net>
-Reviewed-by: Keith Packard <kei...@keithp.com>
----
-diff --git a/dix/resource.c b/dix/resource.c
-index 91d0cfb..ab3762e 100644
---- a/dix/resource.c
-+++ b/dix/resource.c
-@@ -589,6 +589,7 @@ FreeResourceByType(XID id, RESTYPE type, Bool skipFree)
-                             res->value, TypeNameString(res->type));
- #endif
-               *prev = res->next;
-+              clientTable[cid].elements--;
-
-               CallResourceStateCallback(ResourceStateFreeing, res);
-
-@@ -734,12 +735,14 @@ FreeClientNeverRetainResources(ClientPtr client)
-     ResourcePtr *resources;
-     ResourcePtr this;
-     ResourcePtr *prev;
--    int j;
-+    int j, elements;
-+    int *eltptr;
-
-     if (!client)
-       return;
-
-     resources = clientTable[client->index].resources;
-+    eltptr = &clientTable[client->index].elements;
-     for (j=0; j < clientTable[client->index].buckets; j++)
-     {
-       prev = &resources[j];
-@@ -753,11 +756,15 @@ FreeClientNeverRetainResources(ClientPtr client)
-                             this->value, TypeNameString(this->type));
- #endif
-               *prev = this->next;
-+              clientTable[client->index].elements--;
-
-               CallResourceStateCallback(ResourceStateFreeing, this);
-
-+              elements = *eltptr;
-               (*DeleteFuncs[rtype & TypeMask])(this->value, this->id);
-               xfree(this);
-+              if (*eltptr != elements)
-+                  prev = &resources[j]; /* prev may no longer be valid */
-           }
-           else
-               prev = &this->next;
-@@ -804,6 +811,7 @@ FreeClientResources(ClientPtr client)
-                         this->value, TypeNameString(this->type));
- #endif
-           *head = this->next;
-+          clientTable[client->index].elements--;
-
-           CallResourceStateCallback(ResourceStateFreeing, this);
-
---
-cgit v0.8.3-6-g21f6
-
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to