From 23b4bdd49ab31da870e4e39eb20cb23132f473a1 Mon Sep 17 00:00:00 2001 From: Ross Bencina Date: Fri, 2 Sep 2016 18:52:22 +1000 Subject: [PATCH] wdm/ks hotplug: fixed two bugs in CommitDeviceInfos() Firstly, hostApi->info.deviceCount was being zeroed before it was used to specify how many devices to free, so zero devices/filters would be freed. Secondly, a ptr ptr (**) to temporary scan results localScanResults was being pased to DisposeDeviceInfos() instead of a ptr (*). --- src/hostapi/wdmks/pa_win_wdmks.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/hostapi/wdmks/pa_win_wdmks.c b/src/hostapi/wdmks/pa_win_wdmks.c index 608c1c3..2fe922f 100644 --- a/src/hostapi/wdmks/pa_win_wdmks.c +++ b/src/hostapi/wdmks/pa_win_wdmks.c @@ -3706,10 +3706,6 @@ static PaError CommitDeviceInfos( struct PaUtilHostApiRepresentation *hostApi, P { PaWinWdmHostApiRepresentation *wdmHostApi = (PaWinWdmHostApiRepresentation*)hostApi; - hostApi->info.deviceCount = 0; - hostApi->info.defaultInputDevice = paNoDevice; - hostApi->info.defaultOutputDevice = paNoDevice; - /* Free any old memory which might be in the device info */ if( hostApi->deviceInfos ) { @@ -3717,11 +3713,15 @@ static PaError CommitDeviceInfos( struct PaUtilHostApiRepresentation *hostApi, P wdmHostApi->allocations, sizeof(PaWinWDMScanDeviceInfosResults)); localScanResults->deviceInfos = hostApi->deviceInfos; - DisposeDeviceInfos(hostApi, &localScanResults, hostApi->info.deviceCount); + DisposeDeviceInfos(hostApi, localScanResults, hostApi->info.deviceCount); hostApi->deviceInfos = NULL; } + hostApi->info.deviceCount = 0; + hostApi->info.defaultInputDevice = paNoDevice; + hostApi->info.defaultOutputDevice = paNoDevice; + if( scanResults != NULL ) { PaWinWDMScanDeviceInfosResults *scanDeviceInfosResults = ( PaWinWDMScanDeviceInfosResults * ) scanResults; -- 2.43.0