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"
@@ -308,21 +309,12 @@ DPCTLDevice_GetPlatform(__dpctl_keep const DPCTLSyclDeviceRef DRef)
308309__dpctl_give const char *
309310DPCTLDevice_GetName (__dpctl_keep const DPCTLSyclDeviceRef DRef)
310311{
311- char *cstr_name = nullptr ;
312+ const char *cstr_name = nullptr ;
312313 auto D = unwrap (DRef);
313314 if (D) {
314315 try {
315316 auto name = D->get_info <info::device::name>();
316- auto cstr_len = name.length () + 1 ;
317- cstr_name = new char [cstr_len];
318- #ifdef _WIN32
319- strncpy_s (cstr_name, cstr_len, name.c_str (), cstr_len);
320- #else
321- std::strncpy (cstr_name, name.c_str (), cstr_len);
322- #endif
323- } catch (std::bad_alloc const &ba) {
324- // \todo log error
325- std::cerr << ba.what () << ' \n ' ;
317+ cstr_name = dpctl::helper::cstring_from_string (name);
326318 } catch (runtime_error const &re) {
327319 // \todo log error
328320 std::cerr << re.what () << ' \n ' ;
@@ -334,21 +326,12 @@ DPCTLDevice_GetName(__dpctl_keep const DPCTLSyclDeviceRef DRef)
334326__dpctl_give const char *
335327DPCTLDevice_GetVendor (__dpctl_keep const DPCTLSyclDeviceRef DRef)
336328{
337- char *cstr_vendor = nullptr ;
329+ const char *cstr_vendor = nullptr ;
338330 auto D = unwrap (DRef);
339331 if (D) {
340332 try {
341333 auto vendor = D->get_info <info::device::vendor>();
342- auto cstr_len = vendor.length () + 1 ;
343- cstr_vendor = new char [cstr_len];
344- #ifdef _WIN32
345- strncpy_s (cstr_vendor, cstr_len, vendor.c_str (), cstr_len);
346- #else
347- std::strncpy (cstr_vendor, vendor.c_str (), cstr_len);
348- #endif
349- } catch (std::bad_alloc const &ba) {
350- // \todo log error
351- std::cerr << ba.what () << ' \n ' ;
334+ cstr_vendor = dpctl::helper::cstring_from_string (vendor);
352335 } catch (runtime_error const &re) {
353336 // \todo log error
354337 std::cerr << re.what () << ' \n ' ;
@@ -360,21 +343,12 @@ DPCTLDevice_GetVendor(__dpctl_keep const DPCTLSyclDeviceRef DRef)
360343__dpctl_give const char *
361344DPCTLDevice_GetDriverVersion (__dpctl_keep const DPCTLSyclDeviceRef DRef)
362345{
363- char *cstr_driver = nullptr ;
346+ const char *cstr_driver = nullptr ;
364347 auto D = unwrap (DRef);
365348 if (D) {
366349 try {
367350 auto driver = D->get_info <info::device::driver_version>();
368- auto cstr_len = driver.length () + 1 ;
369- cstr_driver = new char [cstr_len];
370- #ifdef _WIN32
371- strncpy_s (cstr_driver, cstr_len, driver.c_str (), cstr_len);
372- #else
373- std::strncpy (cstr_driver, driver.c_str (), cstr_len);
374- #endif
375- } catch (std::bad_alloc const &ba) {
376- // \todo log error
377- std::cerr << ba.what () << ' \n ' ;
351+ cstr_driver = dpctl::helper::cstring_from_string (driver);
378352 } catch (runtime_error const &re) {
379353 // \todo log error
380354 std::cerr << re.what () << ' \n ' ;
0 commit comments