- Fix broken check in MMixerAddMixerControl, which only copied the node name on failure
- Add initialization of LineControlsExtraDat LIST_ENTRY type, which resulted in a crash
svn path=/trunk/; revision=44659
/* get node name */
Status = MixerContext->Control(hDevice, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), (LPVOID)Name, BytesReturned, &BytesReturned);
/* get node name */
Status = MixerContext->Control(hDevice, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), (LPVOID)Name, BytesReturned, &BytesReturned);
- if (Status != MM_STATUS_SUCCESS)
+
+ if (Status == MM_STATUS_SUCCESS)
{
MixerContext->Copy(MixerControl->szShortName, Name, (min(MIXER_SHORT_NAME_CHARS, wcslen(Name)+1)) * sizeof(WCHAR));
MixerControl->szShortName[MIXER_SHORT_NAME_CHARS-1] = L'\0';
{
MixerContext->Copy(MixerControl->szShortName, Name, (min(MIXER_SHORT_NAME_CHARS, wcslen(Name)+1)) * sizeof(WCHAR));
MixerControl->szShortName[MIXER_SHORT_NAME_CHARS-1] = L'\0';
{
MixerContext->Free(Desc);
MixerContext->Free(VolumeData);
{
MixerContext->Free(Desc);
MixerContext->Free(VolumeData);
return MM_STATUS_NO_MEMORY;
}
return MM_STATUS_NO_MEMORY;
}
MixerContext->Free(Desc);
}
MixerContext->Free(Desc);
}
DPRINT("Status %x Name %S\n", Status, MixerControl->szName);
return MM_STATUS_SUCCESS;
}
DPRINT("Status %x Name %S\n", Status, MixerControl->szName);
return MM_STATUS_SUCCESS;
}
DestinationLine->Line.Target.vDriverVersion = MixerInfo->MixCaps.vDriverVersion;
wcscpy(DestinationLine->Line.Target.szPname, MixerInfo->MixCaps.szPname);
DestinationLine->Line.Target.vDriverVersion = MixerInfo->MixCaps.vDriverVersion;
wcscpy(DestinationLine->Line.Target.szPname, MixerInfo->MixCaps.szPname);
+ // initialize extra line
+ InitializeListHead(&DestinationLine->LineControlsExtraData);
// insert into mixer info
InsertHeadList(&MixerInfo->LineList, &DestinationLine->Entry);
// insert into mixer info
InsertHeadList(&MixerInfo->LineList, &DestinationLine->Entry);
IN LPMIXER_DATA MixerData,
IN PULONG DeviceCount)
{
IN LPMIXER_DATA MixerData,
IN PULONG DeviceCount)
{
- PKSMULTIPLE_ITEM NodeTypes, NodeConnections;
+ PKSMULTIPLE_ITEM NodeTypes = NULL, NodeConnections = NULL;
MIXER_STATUS Status;
ULONG PinCount;
ULONG NodeIndex;
MIXER_STATUS Status;
ULONG PinCount;
ULONG NodeIndex;
}
// check if the filter has an wave out node
}
// check if the filter has an wave out node
NodeIndex = MMixerGetIndexOfGuid(NodeTypes, &KSNODETYPE_DAC);
if (NodeIndex != MAXULONG)
{
NodeIndex = MMixerGetIndexOfGuid(NodeTypes, &KSNODETYPE_DAC);
if (NodeIndex != MAXULONG)
{