@@ -149,7 +149,11 @@ inline void save(Archive &ar, cholmod_common const &cc,
149149 // workspace, so we don't even do anything special when we
150150 // deserialize.
151151 ar (CEREAL_NVP (cc.itype ));
152+
153+ #if CHOLMOD_VERSION < CHOLMOD_VER_CODE(5, 0)
152154 ar (CEREAL_NVP (cc.dtype ));
155+ #endif
156+
153157 ar (CEREAL_NVP (cc.no_workspace_reallocate ));
154158 ar (CEREAL_NVP (cc.status ));
155159 ar (CEREAL_NVP (cc.fl ));
@@ -177,8 +181,18 @@ inline void save(Archive &ar, cholmod_common const &cc,
177181 ar (CEREAL_NVP (cc.SPQR_flopcount_bound ));
178182 ar (CEREAL_NVP (cc.SPQR_tol_used ));
179183 ar (CEREAL_NVP (cc.SPQR_norm_E_fro ));
180- static_assert (sizeof (cc.SPQR_istat ) == 10 * sizeof (SuiteSparse_long),
181- " cholmod_common.SPQR_istat expected to have 10 elements." );
184+
185+ // The number of elements was size 10 in CHOLMOD v4.2; reduced to 8 in CHOLMOD
186+ // v5:
187+ #if CHOLMOD_VERSION < CHOLMOD_VER_CODE(5, 0)
188+ constexpr size_t cNumSPQRElements = 10 ;
189+ #else
190+ constexpr size_t cNumSPQRElements = 8 ;
191+ #endif
192+ static_assert (
193+ sizeof (cc.SPQR_istat ) == cNumSPQRElements * sizeof (SuiteSparse_long),
194+ " cholmod_common.SPQR_istat expected to have certain number of elements." );
195+
182196 ar (::cereal::make_nvp (" cc.SPQR_istat0" , cc.SPQR_istat [0 ]));
183197 ar (::cereal::make_nvp (" cc.SPQR_istat1" , cc.SPQR_istat [1 ]));
184198 ar (::cereal::make_nvp (" cc.SPQR_istat2" , cc.SPQR_istat [2 ]));
@@ -187,8 +201,11 @@ inline void save(Archive &ar, cholmod_common const &cc,
187201 ar (::cereal::make_nvp (" cc.SPQR_istat5" , cc.SPQR_istat [5 ]));
188202 ar (::cereal::make_nvp (" cc.SPQR_istat6" , cc.SPQR_istat [6 ]));
189203 ar (::cereal::make_nvp (" cc.SPQR_istat7" , cc.SPQR_istat [7 ]));
204+
205+ #if CHOLMOD_VERSION < CHOLMOD_VER_CODE(5, 0)
190206 ar (::cereal::make_nvp (" cc.SPQR_istat8" , cc.SPQR_istat [8 ]));
191207 ar (::cereal::make_nvp (" cc.SPQR_istat9" , cc.SPQR_istat [9 ]));
208+ #endif
192209
193210 // Completely ignore all the GPU stuff.
194211#ifdef GPU_BLAS
@@ -261,7 +278,11 @@ inline void load(Archive &ar, cholmod_common &cc,
261278 ar (CEREAL_NVP (cc.mark ));
262279 ALBATROSS_ASSERT (cholmod_l_free_work (&cc) == 1 );
263280 ar (CEREAL_NVP (cc.itype ));
281+
282+ #if CHOLMOD_VERSION < CHOLMOD_VER_CODE(5, 0)
264283 ar (CEREAL_NVP (cc.dtype ));
284+ #endif
285+
265286 ar (CEREAL_NVP (cc.no_workspace_reallocate ));
266287 ar (CEREAL_NVP (cc.status ));
267288 ar (CEREAL_NVP (cc.fl ));
@@ -289,8 +310,18 @@ inline void load(Archive &ar, cholmod_common &cc,
289310 ar (CEREAL_NVP (cc.SPQR_flopcount_bound ));
290311 ar (CEREAL_NVP (cc.SPQR_tol_used ));
291312 ar (CEREAL_NVP (cc.SPQR_norm_E_fro ));
292- static_assert (sizeof (cc.SPQR_istat ) == 10 * sizeof (SuiteSparse_long),
293- " cholmod_common.SPQR_istat expected to have 10 elements." );
313+
314+ // The number of elements was size 10 in CHOLMOD v4.2; reduced to 8 in CHOLMOD
315+ // v5:
316+ #if CHOLMOD_VERSION < CHOLMOD_VER_CODE(5, 0)
317+ constexpr size_t cNumSPQRElements = 10 ;
318+ #else
319+ constexpr size_t cNumSPQRElements = 8 ;
320+ #endif
321+
322+ static_assert (
323+ sizeof (cc.SPQR_istat ) == cNumSPQRElements * sizeof (SuiteSparse_long),
324+ " cholmod_common.SPQR_istat expected to have certain number of elements." );
294325 ar (::cereal::make_nvp (" cc.SPQR_istat0" , cc.SPQR_istat [0 ]));
295326 ar (::cereal::make_nvp (" cc.SPQR_istat1" , cc.SPQR_istat [1 ]));
296327 ar (::cereal::make_nvp (" cc.SPQR_istat2" , cc.SPQR_istat [2 ]));
@@ -299,8 +330,11 @@ inline void load(Archive &ar, cholmod_common &cc,
299330 ar (::cereal::make_nvp (" cc.SPQR_istat5" , cc.SPQR_istat [5 ]));
300331 ar (::cereal::make_nvp (" cc.SPQR_istat6" , cc.SPQR_istat [6 ]));
301332 ar (::cereal::make_nvp (" cc.SPQR_istat7" , cc.SPQR_istat [7 ]));
333+
334+ #if CHOLMOD_VERSION < CHOLMOD_VER_CODE(5, 0)
302335 ar (::cereal::make_nvp (" cc.SPQR_istat8" , cc.SPQR_istat [8 ]));
303336 ar (::cereal::make_nvp (" cc.SPQR_istat9" , cc.SPQR_istat [9 ]));
337+ #endif
304338
305339 // Completely ignore all the GPU stuff.
306340#ifdef GPU_BLAS
0 commit comments