On Fri, 7 May 2010 14:58:05 -0400, Kristian Høgsberg <k...@bitplanet.net> wrote:
> resources = clientTable[client->index].resources; > + eltptr = &clientTable[client->index].elements; > for (i = 0; i < clientTable[client->index].buckets; i++) { > for (this = resources[i]; this; this = next) { > next = this->next; > if (!type || this->type == type) { > /* workaround func freeing the type as DRI1 does */ > value = this->value; > + elements = *eltptr; > if((*func)(value, this->id, cdata)) > return value; > + if (*eltptr != elements) > + next = resources[i]; /* start over */ This one scares me a bit -- what happens if the function *adds* a resource? You'll rescan the table and call it again with the same resource. Everything else looks great; thanks for finding the oldest bug this year. -- keith.pack...@intel.com
pgp5N4SWF7pPF.pgp
Description: PGP signature
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel