From 31d7c870cfbc964e6305b09332e2bcf65bdde93e Mon Sep 17 00:00:00 2001 From: daizhirui Date: Sat, 8 Feb 2025 10:43:25 -0800 Subject: [PATCH] Remove some maybe-uninitialized warnings (#5516) * Remove some maybe-uninitialized warnings In the Eigen matrix type_caster, resize the matrix instead of assigning with a new one when the matrix size needs to be adjusted. This can remove lots of compiling warnings about "maybe-uninitialized". * Revert "Remove some maybe-uninitialized warnings" This reverts commit 7d5a9b41aaf6878f9ff27aa0fb68c6de4a409a01. * Suppress `-Wmaybe-uninitialized` warning Reproducer: https://github.com/pybind/pybind11/pull/5516#issuecomment-2645846295 --------- Co-authored-by: Ralf W. Grosse-Kunstleve --- include/pybind11/eigen/matrix.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/pybind11/eigen/matrix.h b/include/pybind11/eigen/matrix.h index 5cf1f0a2a..d2999d61b 100644 --- a/include/pybind11/eigen/matrix.h +++ b/include/pybind11/eigen/matrix.h @@ -316,8 +316,11 @@ struct type_caster::value>> { return false; } + PYBIND11_WARNING_PUSH + PYBIND11_WARNING_DISABLE_GCC("-Wmaybe-uninitialized") // See PR #5516 // Allocate the new type, then build a numpy reference into it value = Type(fits.rows, fits.cols); + PYBIND11_WARNING_POP auto ref = reinterpret_steal(eigen_ref_array(value)); if (dims == 1) { ref = ref.squeeze();