diff options
author | Erik Schnetter <schnetter@gmail.com> | 2012-11-06 13:36:54 -0500 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2012-11-06 13:36:54 -0500 |
commit | 1bdb022a5dec73500986edb41ea1c8e67c6c5fc5 (patch) | |
tree | d4c3a49b6aac669d3f38ffb5186ed5a584c8ec7f /Carpet/CarpetReduce | |
parent | 894cf0ab04227f28ce7fda66d493548e7ddd0728 (diff) |
CarpetReduce: Do not access NULL pointer
Diffstat (limited to 'Carpet/CarpetReduce')
-rw-r--r-- | Carpet/CarpetReduce/src/reduce.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Carpet/CarpetReduce/src/reduce.cc b/Carpet/CarpetReduce/src/reduce.cc index dc24111da..9a8b804f5 100644 --- a/Carpet/CarpetReduce/src/reduce.cc +++ b/Carpet/CarpetReduce/src/reduce.cc @@ -976,8 +976,11 @@ namespace CarpetReduce { #define FINALISE(OP,S) \ case do_##OP: { \ typedef typeconv<S>::goodtype T; \ - finalise<T,OP::op<T> > (&((char*)outvals)[vartypesize*n], \ - & counts [vartypesize*n]); \ + void *const outval = &((char*)outvals)[vartypesize*n]; \ + T dummy; \ + void *const cnt = \ + red->uses_cnt() ? (void*)&counts[vartypesize*n] : (void*)&dummy; \ + finalise<T,OP::op<T> > (outval, cnt); \ break; \ } #define TYPECASE(N,T) \ |