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

Attachment: 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

Reply via email to