diff --git a/src/x11.cc b/src/x11.cc index cb77b1887..b1040fb21 100644 --- a/src/x11.cc +++ b/src/x11.cc @@ -246,7 +246,7 @@ static int x11_error_handler(Display *d, XErrorEvent *err) { xcb_errors_ctx, err->error_code, &extension); if (extension != nullptr) { const std::size_t size = strlen(base_name) + strlen(extension) + 4; - error_name = new char(size); + error_name = new char[size]; snprintf(error_name, size, "%s (%s)", base_name, extension); name_allocated = true; } else { @@ -259,7 +259,7 @@ static int x11_error_handler(Display *d, XErrorEvent *err) { xcb_errors_ctx, err->request_code, err->minor_code); if (minor != nullptr) { const std::size_t size = strlen(base_name) + strlen(extension) + 4; - code_description = new char(size); + code_description = new char[size]; snprintf(code_description, size, "%s - %s", major, minor); code_allocated = true; } else { @@ -284,7 +284,7 @@ static int x11_error_handler(Display *d, XErrorEvent *err) { } if (code_description == nullptr) { const std::size_t size = 37; - code_description = new char(size); + code_description = new char[size]; snprintf(code_description, size, "error code: [major: %i, minor: %i]", err->request_code, err->minor_code); code_allocated = true; @@ -297,8 +297,8 @@ static int x11_error_handler(Display *d, XErrorEvent *err) { error_name, reinterpret_cast(err->display), static_cast(err->resourceid), err->serial, code_description); - if (name_allocated) free(error_name); - if (code_allocated) free(code_description); + if (name_allocated) delete[] error_name; + if (code_allocated) delete[] code_description; return 0; }