2525// ===----------------------------------------------------------------------===//
2626
2727#include " dpctl_sycl_device_interface.h"
28+ #include " ../helper/include/dpctl_string_utils.hpp"
2829#include " ../helper/include/dpctl_utils_helper.h"
2930#include " Support/CBindingWrapping.h"
3031#include " dpctl_sycl_device_manager.h"
@@ -307,21 +308,12 @@ DPCTLDevice_GetPlatform(__dpctl_keep const DPCTLSyclDeviceRef DRef)
307308__dpctl_give const char *
308309DPCTLDevice_GetName (__dpctl_keep const DPCTLSyclDeviceRef DRef)
309310{
310- char *cstr_name = nullptr ;
311+ const char *cstr_name = nullptr ;
311312 auto D = unwrap (DRef);
312313 if (D) {
313314 try {
314315 auto name = D->get_info <info::device::name>();
315- auto cstr_len = name.length () + 1 ;
316- cstr_name = new char [cstr_len];
317- #ifdef _WIN32
318- strncpy_s (cstr_name, cstr_len, name.c_str (), cstr_len);
319- #else
320- std::strncpy (cstr_name, name.c_str (), cstr_len);
321- #endif
322- } catch (std::bad_alloc const &ba) {
323- // \todo log error
324- std::cerr << ba.what () << ' \n ' ;
316+ cstr_name = dpctl::helper::cstring_from_string (name);
325317 } catch (runtime_error const &re) {
326318 // \todo log error
327319 std::cerr << re.what () << ' \n ' ;
@@ -333,21 +325,12 @@ DPCTLDevice_GetName(__dpctl_keep const DPCTLSyclDeviceRef DRef)
333325__dpctl_give const char *
334326DPCTLDevice_GetVendor (__dpctl_keep const DPCTLSyclDeviceRef DRef)
335327{
336- char *cstr_vendor = nullptr ;
328+ const char *cstr_vendor = nullptr ;
337329 auto D = unwrap (DRef);
338330 if (D) {
339331 try {
340332 auto vendor = D->get_info <info::device::vendor>();
341- auto cstr_len = vendor.length () + 1 ;
342- cstr_vendor = new char [cstr_len];
343- #ifdef _WIN32
344- strncpy_s (cstr_vendor, cstr_len, vendor.c_str (), cstr_len);
345- #else
346- std::strncpy (cstr_vendor, vendor.c_str (), cstr_len);
347- #endif
348- } catch (std::bad_alloc const &ba) {
349- // \todo log error
350- std::cerr << ba.what () << ' \n ' ;
333+ cstr_vendor = dpctl::helper::cstring_from_string (vendor);
351334 } catch (runtime_error const &re) {
352335 // \todo log error
353336 std::cerr << re.what () << ' \n ' ;
@@ -359,21 +342,12 @@ DPCTLDevice_GetVendor(__dpctl_keep const DPCTLSyclDeviceRef DRef)
359342__dpctl_give const char *
360343DPCTLDevice_GetDriverVersion (__dpctl_keep const DPCTLSyclDeviceRef DRef)
361344{
362- char *cstr_driver = nullptr ;
345+ const char *cstr_driver = nullptr ;
363346 auto D = unwrap (DRef);
364347 if (D) {
365348 try {
366349 auto driver = D->get_info <info::device::driver_version>();
367- auto cstr_len = driver.length () + 1 ;
368- cstr_driver = new char [cstr_len];
369- #ifdef _WIN32
370- strncpy_s (cstr_driver, cstr_len, driver.c_str (), cstr_len);
371- #else
372- std::strncpy (cstr_driver, driver.c_str (), cstr_len);
373- #endif
374- } catch (std::bad_alloc const &ba) {
375- // \todo log error
376- std::cerr << ba.what () << ' \n ' ;
350+ cstr_driver = dpctl::helper::cstring_from_string (driver);
377351 } catch (runtime_error const &re) {
378352 // \todo log error
379353 std::cerr << re.what () << ' \n ' ;
0 commit comments