Hi Jeffrey! The CVS head/1.5.3 distribution loop in hal_device_added() is flawed since "j" is only initialized to 0 in the outer loop (over i) and never set back to 0. This means that only the first item in devices[] (which happens to be the most popular "block" capability) is executed, it does not work for all subsequent loops. Doing 1.5 loops in one for() construct is also a bit confusing, so I cleaned this up a little and made it work for all devices[] entries. (Patch attached) Thanks for considering, Martin -- Martin Pitt http://www.piware.de Ubuntu Developer http://www.ubuntu.com Debian Developer http://www.debian.org In a world without walls and fences, who needs Windows and Gates?
diff -ruN gnome-volume-manager-1.5.3-old/src/manager.c gnome-volume-manager-1.5.3/src/manager.c --- gnome-volume-manager-1.5.3-old/src/manager.c 2005-10-19 12:01:11.000000000 +0200 +++ gnome-volume-manager-1.5.3/src/manager.c 2005-10-19 12:02:14.000000000 +0200 @@ -1890,8 +1890,9 @@ qsort (capabilities, n, sizeof (char *), strptrcmp); - for (i = 0, j = 0; i < G_N_ELEMENTS (devices) && j < n; i++) { + for (i = 0; i < G_N_ELEMENTS (devices); i++) { int cmp = -1; + j = 0; while (j < n && (cmp = strcmp (capabilities[j], devices[i].capability)) < 0) j++; @@ -1899,7 +1900,6 @@ if (cmp == 0) { if (devices[i].handler (udi, capabilities[j])) break; - j++; } }
Attachment:
signature.asc
Description: Digital signature