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
This commit is contained in:
François Revol
2007-01-24 00:24:51 +00:00
parent 355260f73b
commit ea62eb1bc9
+16 -14
View File
@@ -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) if (pci_class_base_id == 0x80)
snprintf(classInfo, size, " (Other)"); snprintf(classInfo, size, " (Other)");
else { else {
PCI_CLASSCODETABLE *s = PciClassCodeTable, *foundItem = NULL; PCI_CLASSCODETABLE *foundItem = NULL;
while (s->BaseDesc) { int i;
if ((pci_class_base_id == s->BaseClass) for (i = 0; i < (int)PCI_CLASSCODETABLE_LEN; i++) {
&& (pci_class_sub_id == s->SubClass)) { if ((pci_class_base_id == PciClassCodeTable[i].BaseClass)
foundItem = s; && (pci_class_sub_id == PciClassCodeTable[i].SubClass)) {
if (pci_class_api_id == s->ProgIf) foundItem = &PciClassCodeTable[i];
if (pci_class_api_id == PciClassCodeTable[i].ProgIf)
break; break;
} }
s++;
} }
if (!s->BaseDesc) if (foundItem) {
s = foundItem; if (pci_class_sub_id != 0x80)
if (pci_class_sub_id != 0x80) snprintf(classInfo, size, "%s (%s%s%s)", foundItem->BaseDesc, foundItem->SubDesc,
snprintf(classInfo, size, "%s (%s%s%s)", s->BaseDesc, s->SubDesc, (foundItem->ProgDesc && strcmp("", foundItem->ProgDesc)) ? ", " : "", foundItem->ProgDesc);
(s->ProgDesc && strcmp("", s->ProgDesc)) ? ", " : "", s->ProgDesc); else
else snprintf(classInfo, size, "%s", foundItem->BaseDesc);
snprintf(classInfo, size, "%s", s->BaseDesc); } else
snprintf(classInfo, size, "%s (%u:%u:%u)", "(Unknown)",
pci_class_base_id, pci_class_sub_id, pci_class_api_id);
} }
} }