clover: Handle NULL devices returned by pipe_loader_probe() v2
authorTom Stellard <thomas.stellard@amd.com>
Sat, 28 Nov 2015 02:40:24 +0000 (02:40 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Tue, 1 Dec 2015 16:00:54 +0000 (16:00 +0000)
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 <currojerez@riseup.net>
Acked-by: Emil Velikov <emil.l.velikov@gmail.com>
CC: <mesa-stable@lists.freedesktop.org>
src/gallium/state_trackers/clover/core/platform.cpp

index 328b71cdcb1bc1e6b7a7ff92117051deb4c12b1f..489e8dc5a831c482c5d62fd4db4d48ff7381bac7 100644 (file)
@@ -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);
       }