[NTOSKRNL]

- Fix a bug in IopCreateResourceListFromRequirements which was triggering a sanity ASSERT because it forgot to skip conflicting entries

svn path=/trunk/; revision=53261
This commit is contained in:
Cameron Gutman 2011-08-15 08:29:22 +00:00
parent 6d2566752f
commit 36b3277b89

View file

@ -217,6 +217,7 @@ IopCreateResourceListFromRequirements(
for (ii = 0; ii < ResList->Count; ii++) for (ii = 0; ii < ResList->Count; ii++)
{ {
PIO_RESOURCE_DESCRIPTOR ReqDesc = &ResList->Descriptors[ii]; PIO_RESOURCE_DESCRIPTOR ReqDesc = &ResList->Descriptors[ii];
BOOLEAN FoundResource = TRUE;
/* FIXME: Handle alternate ranges */ /* FIXME: Handle alternate ranges */
if (ReqDesc->Option == IO_RESOURCE_ALTERNATIVE) if (ReqDesc->Option == IO_RESOURCE_ALTERNATIVE)
@ -240,6 +241,8 @@ IopCreateResourceListFromRequirements(
*ResourceList = NULL; *ResourceList = NULL;
return STATUS_CONFLICTING_ADDRESSES; return STATUS_CONFLICTING_ADDRESSES;
} }
FoundResource = FALSE;
} }
break; break;
@ -256,6 +259,8 @@ IopCreateResourceListFromRequirements(
*ResourceList = NULL; *ResourceList = NULL;
return STATUS_CONFLICTING_ADDRESSES; return STATUS_CONFLICTING_ADDRESSES;
} }
FoundResource = FALSE;
} }
break; break;
@ -272,6 +277,8 @@ IopCreateResourceListFromRequirements(
*ResourceList = NULL; *ResourceList = NULL;
return STATUS_CONFLICTING_ADDRESSES; return STATUS_CONFLICTING_ADDRESSES;
} }
FoundResource = FALSE;
} }
break; break;
@ -288,6 +295,8 @@ IopCreateResourceListFromRequirements(
*ResourceList = NULL; *ResourceList = NULL;
return STATUS_CONFLICTING_ADDRESSES; return STATUS_CONFLICTING_ADDRESSES;
} }
FoundResource = FALSE;
} }
break; break;
@ -303,16 +312,22 @@ IopCreateResourceListFromRequirements(
*ResourceList = NULL; *ResourceList = NULL;
return STATUS_CONFLICTING_ADDRESSES; return STATUS_CONFLICTING_ADDRESSES;
} }
FoundResource = FALSE;
} }
break; break;
default: default:
DPRINT1("Unsupported resource type: %x\n", ReqDesc->Type); DPRINT1("Unsupported resource type: %x\n", ReqDesc->Type);
FoundResource = FALSE;
break; break;
} }
(*ResourceList)->List[0].PartialResourceList.Count++; if (FoundResource)
ResDesc++; {
(*ResourceList)->List[0].PartialResourceList.Count++;
ResDesc++;
}
} }
} }