Fix possible UB in ArrayRef construction
[alexxy/gromacs.git] / src / gromacs / domdec / partition.cpp
index 6cd38c9f0161ca1306e8ddc9fe81e7800b82e512..e9adda3092c48195eaa987370e04d755e8a949a7 100644 (file)
@@ -43,6 +43,7 @@
 
 #include "gmxpre.h"
 
+#include "gromacs/utility/arrayref.h"
 #include "partition.h"
 
 #include "config.h"
@@ -3289,11 +3290,14 @@ void dd_partition_system(FILE*                     fplog,
                                 mdatoms->nChargePerturbed != 0,
                                 mdatoms->nTypePerturbed != 0,
                                 gmx::arrayRefFromArray(mdatoms->chargeA, mdatoms->nr),
-                                gmx::arrayRefFromArray(mdatoms->chargeB, mdatoms->nr),
+                                mdatoms->chargeB ? gmx::arrayRefFromArray(mdatoms->chargeB, mdatoms->nr)
+                                                 : gmx::ArrayRef<real>{},
                                 gmx::arrayRefFromArray(mdatoms->sqrt_c6A, mdatoms->nr),
-                                gmx::arrayRefFromArray(mdatoms->sqrt_c6B, mdatoms->nr),
+                                mdatoms->sqrt_c6B ? gmx::arrayRefFromArray(mdatoms->sqrt_c6B, mdatoms->nr)
+                                                  : gmx::ArrayRef<real>{},
                                 gmx::arrayRefFromArray(mdatoms->sigmaA, mdatoms->nr),
-                                gmx::arrayRefFromArray(mdatoms->sigmaB, mdatoms->nr),
+                                mdatoms->sigmaB ? gmx::arrayRefFromArray(mdatoms->sigmaB, mdatoms->nr)
+                                                : gmx::ArrayRef<real>{},
                                 dd_pme_maxshift_x(*dd),
                                 dd_pme_maxshift_y(*dd));
     }