diff --git a/flake.nix b/flake.nix index 836f1c9ba..3767a4d0a 100644 --- a/flake.nix +++ b/flake.nix @@ -52,6 +52,11 @@ stdenv.mkDerivation rec { name = "conky"; src = ./.; + cmakeFlags = [ + "-DBUILD_LUA_CAIRO=ON" + "-DBUILD_LUA_IMLIB2=ON" + "-DBUILD_LUA_RSVG=ON" + ]; nativeBuildInputs = [ clang_16 cmake @@ -62,9 +67,11 @@ ]; buildInputs = [ + cairo freetype gettext imlib2 + librsvg llvmPackages_16.libcxx llvmPackages_16.libcxxabi lua5_4 @@ -72,13 +79,13 @@ xorg.libICE xorg.libSM xorg.libX11 + xorg.libxcb xorg.libXdamage xorg.libXext xorg.libXfixes xorg.libXft - xorg.libXinerama xorg.libXi - xorg.libxcb + xorg.libXinerama xorg.xcbutilerrors ] ++ lib.optional stdenv.isDarwin darwin.libobjc; 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; }