opencl/source/opencl_device.cxx |   11 ++++++++---
 opencl/source/openclwrapper.cxx |    2 ++
 2 files changed, 10 insertions(+), 3 deletions(-)

New commits:
commit d171f3670b6726772934730024051d1534796ad5
Author: Mark Hung <mark...@gmail.com>
Date:   Fri May 13 19:58:18 2016 +0800

    Ensure that OpenCL device id returned from getDeviceSelection() is valid.
    
    Change-Id: I756bb57d471db3d3ca1d9c3733d359c7c16b4e66
    Reviewed-on: https://gerrit.libreoffice.org/24959
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Mark Page <aptit...@btconnect.com>
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    (cherry picked from commit 40b0b9ab7703a165295b008f47df14d2ec076fb1)
    Reviewed-on: https://gerrit.libreoffice.org/25962
    Reviewed-by: Michael Stahl <mst...@redhat.com>
    Tested-by: Michael Stahl <mst...@redhat.com>

diff --git a/opencl/source/opencl_device.cxx b/opencl/source/opencl_device.cxx
index db143e3..9c91d70 100644
--- a/opencl/source/opencl_device.cxx
+++ b/opencl/source/opencl_device.cxx
@@ -636,10 +636,15 @@ ds_device getDeviceSelection(
         }
 
         /* Final device selection */
-        selectedDevice = aProfile->devices[bestDeviceIdx];
-        bIsDeviceSelected = true;
+        if (bestDeviceIdx >=0 && static_cast< 
std::vector<ds_device>::size_type> ( bestDeviceIdx ) < aProfile->devices.size() 
)
+        {
+            selectedDevice = aProfile->devices[bestDeviceIdx];
+            bIsDeviceSelected = true;
 
-        writeDevicesLog(aProfile, sProfilePath, bestDeviceIdx);
+            writeDevicesLog(aProfile, sProfilePath, bestDeviceIdx);
+        } else {
+            selectedDevice.eType = DeviceType::NativeCPU;
+        }
     }
     return selectedDevice;
 }
diff --git a/opencl/source/openclwrapper.cxx b/opencl/source/openclwrapper.cxx
index 1655cb6..ab65091 100644
--- a/opencl/source/openclwrapper.cxx
+++ b/opencl/source/openclwrapper.cxx
@@ -703,6 +703,8 @@ bool switchOpenCLDevice(const OUString* pDevice, bool 
bAutoSelect, bool bForceEv
         OUString path;
         osl::FileBase::getSystemPathFromFileURL(url,path);
         ds_device aSelectedDevice = getDeviceSelection(path, bForceEvaluation);
+        if ( aSelectedDevice.eType != DeviceType::OpenCLDevice)
+            return false;
         pDeviceId = aSelectedDevice.aDeviceID;
 
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to