summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Stellard <[email protected]>2015-11-28 02:40:24 +0000
committerTom Stellard <[email protected]>2015-12-01 16:00:54 +0000
commit9adbb9e7134fdc40766710592e81cbc9c09c7aaa (patch)
treef2613959860bba5657f73585f5b767a5e3f3b773
parent99cd60083518ad4465e3e29996168e8fa8a89fbb (diff)
clover: Handle NULL devices returned by pipe_loader_probe() v2
When probing for devices, clover will call pipe_loader_probe() twice. The first time to retrieve the number of devices, and then second time to retrieve the device structures. We currently assume that the return value of both calls will be the same, but this will not be the case if a device happens to disappear between the two calls. When a device disappears, the pipe_loader_probe() will add a NULL device to the device list, so we need to handle this. v2: - Keep range for loop Reviewed-by: Francisco Jerez <[email protected]> Acked-by: Emil Velikov <[email protected]> CC: <[email protected]>
-rw-r--r--src/gallium/state_trackers/clover/core/platform.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/clover/core/platform.cpp b/src/gallium/state_trackers/clover/core/platform.cpp
index 328b71cdcb1..489e8dc5a83 100644
--- a/src/gallium/state_trackers/clover/core/platform.cpp
+++ b/src/gallium/state_trackers/clover/core/platform.cpp
@@ -32,7 +32,8 @@ platform::platform() : adaptor_range(evals(), devs) {
for (pipe_loader_device *ldev : ldevs) {
try {
- devs.push_back(create<device>(*this, ldev));
+ if (ldev)
+ devs.push_back(create<device>(*this, ldev));
} catch (error &) {
pipe_loader_release(&ldev, 1);
}