From ea62eb1bc95b3e280d70ce2e88f7fca5452f0209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Wed, 24 Jan 2007 00:24:51 +0000 Subject: [PATCH] This should fix intermitent KDLs (at least with console debug output). Use the size of the struct instead of checking a pointer that is never NULL... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19935 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/shared/pci-utils.h | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/headers/private/shared/pci-utils.h b/headers/private/shared/pci-utils.h index 3c558c39cc..d56191ef92 100644 --- a/headers/private/shared/pci-utils.h +++ b/headers/private/shared/pci-utils.h @@ -14,23 +14,25 @@ get_class_info(uint8 pci_class_base_id, uint8 pci_class_sub_id, uint8 pci_class_ if (pci_class_base_id == 0x80) snprintf(classInfo, size, " (Other)"); else { - PCI_CLASSCODETABLE *s = PciClassCodeTable, *foundItem = NULL; - while (s->BaseDesc) { - if ((pci_class_base_id == s->BaseClass) - && (pci_class_sub_id == s->SubClass)) { - foundItem = s; - if (pci_class_api_id == s->ProgIf) + PCI_CLASSCODETABLE *foundItem = NULL; + int i; + for (i = 0; i < (int)PCI_CLASSCODETABLE_LEN; i++) { + if ((pci_class_base_id == PciClassCodeTable[i].BaseClass) + && (pci_class_sub_id == PciClassCodeTable[i].SubClass)) { + foundItem = &PciClassCodeTable[i]; + if (pci_class_api_id == PciClassCodeTable[i].ProgIf) break; } - s++; } - if (!s->BaseDesc) - s = foundItem; - if (pci_class_sub_id != 0x80) - snprintf(classInfo, size, "%s (%s%s%s)", s->BaseDesc, s->SubDesc, - (s->ProgDesc && strcmp("", s->ProgDesc)) ? ", " : "", s->ProgDesc); - else - snprintf(classInfo, size, "%s", s->BaseDesc); + if (foundItem) { + if (pci_class_sub_id != 0x80) + snprintf(classInfo, size, "%s (%s%s%s)", foundItem->BaseDesc, foundItem->SubDesc, + (foundItem->ProgDesc && strcmp("", foundItem->ProgDesc)) ? ", " : "", foundItem->ProgDesc); + else + snprintf(classInfo, size, "%s", foundItem->BaseDesc); + } else + snprintf(classInfo, size, "%s (%u:%u:%u)", "(Unknown)", + pci_class_base_id, pci_class_sub_id, pci_class_api_id); } }