From 9cdfebb4470922e566fd6eacdd7bcbb69d98422f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 13 Jan 2008 12:35:08 +0000 Subject: [PATCH] Fixed removing from device list with only one device info present git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23488 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/midi/usb_midi/devlist.c | 22 ++++++++----------- .../kernel/drivers/midi/usb_midi/usb_midi.c | 6 ++--- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/add-ons/kernel/drivers/midi/usb_midi/devlist.c b/src/add-ons/kernel/drivers/midi/usb_midi/devlist.c index bec3ec9019..c9c1c9adc0 100644 --- a/src/add-ons/kernel/drivers/midi/usb_midi/devlist.c +++ b/src/add-ons/kernel/drivers/midi/usb_midi/devlist.c @@ -55,15 +55,14 @@ void remove_device_info (my_device_info *my_dev) { assert (my_dev != NULL); acquire_sem (my_device_list_lock); - if (my_device_list == my_dev) + if (my_device_list == my_dev) { my_device_list = my_dev->next; - else - { + --my_device_count; + my_device_list_changed = true; + } else { my_device_info *d; - for (d = my_device_list; d != NULL; d = d->next) - { - if (d->next == my_dev) - { + for (d = my_device_list; d != NULL; d = d->next) { + if (d->next == my_dev) { d->next = my_dev->next; --my_device_count; my_device_list_changed = true; @@ -80,8 +79,7 @@ my_device_info *search_device_info (const char* name) my_device_info *my_dev; acquire_sem (my_device_list_lock); - for (my_dev = my_device_list; my_dev != NULL; my_dev = my_dev->next) - { + for (my_dev = my_device_list; my_dev != NULL; my_dev = my_dev->next) { if (strcmp(my_dev->name, name) == 0) break; } @@ -104,8 +102,7 @@ void alloc_device_names (void) void free_device_names (void) { - if (my_device_names != NULL) - { + if (my_device_names != NULL) { int i; for (i = 0; my_device_names [i] != NULL; i++) free (my_device_names [i]); @@ -121,8 +118,7 @@ void rebuild_device_names (void) assert (my_device_names != NULL); acquire_sem (my_device_list_lock); - for (i = 0, my_dev = my_device_list; my_dev != NULL; my_dev = my_dev->next) - { + for (i = 0, my_dev = my_device_list; my_dev != NULL; my_dev = my_dev->next) { my_device_names [i++] = strdup(my_dev->name); DPRINTF_INFO ((MY_ID "publishing %s\n", my_dev->name)); } diff --git a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c index 82061df7ca..122283c18f 100644 --- a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c +++ b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.c @@ -540,9 +540,9 @@ uninit_driver (void) DPRINTF_INFO ((MY_ID "uninit_driver()\n")); usb->uninstall_notify (usb_midi_driver_name); - delete_sem (my_device_list_lock); - put_module (B_USB_MODULE_NAME); - free_device_names (); + delete_sem(my_device_list_lock); + put_module(B_USB_MODULE_NAME); + free_device_names(); } /*