From db18c32b23ab3ea13a25fbac65f4a09f17ffec45 Mon Sep 17 00:00:00 2001 From: Chris Brunner Date: Tue, 16 Sep 2008 18:57:59 +0000 Subject: [PATCH] fixes a crash when building models after compiling with msvc9 --- panda/src/mathutil/fftCompressor.cxx | 60 ++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/panda/src/mathutil/fftCompressor.cxx b/panda/src/mathutil/fftCompressor.cxx index 66ddfef36d..5cce5ae484 100644 --- a/panda/src/mathutil/fftCompressor.cxx +++ b/panda/src/mathutil/fftCompressor.cxx @@ -405,9 +405,15 @@ write_hprs(Datagram &datagram, const LVecBase3f *array, int length) { r.push_back(array[i][2]); } - write_reals(datagram, &h[0], length); - write_reals(datagram, &p[0], length); - write_reals(datagram, &r[0], length); + if (length == 0) { + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + } else { + write_reals(datagram, &h[0], length); + write_reals(datagram, &p[0], length); + write_reals(datagram, &r[0], length); + } return; } if (_quality >= 103) { @@ -432,15 +438,27 @@ write_hprs(Datagram &datagram, const LVecBase3f *array, int length) { m22.push_back(mat(2, 2)); } - write_reals(datagram, &m00[0], length); - write_reals(datagram, &m01[0], length); - write_reals(datagram, &m02[0], length); - write_reals(datagram, &m10[0], length); - write_reals(datagram, &m11[0], length); - write_reals(datagram, &m12[0], length); - write_reals(datagram, &m20[0], length); - write_reals(datagram, &m21[0], length); - write_reals(datagram, &m22[0], length); + if (length == 0) { + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + } else { + write_reals(datagram, &m00[0], length); + write_reals(datagram, &m01[0], length); + write_reals(datagram, &m02[0], length); + write_reals(datagram, &m10[0], length); + write_reals(datagram, &m11[0], length); + write_reals(datagram, &m12[0], length); + write_reals(datagram, &m20[0], length); + write_reals(datagram, &m21[0], length); + write_reals(datagram, &m22[0], length); + } return; } #endif @@ -515,12 +533,22 @@ write_hprs(Datagram &datagram, const LVecBase3f *array, int length) { // instead of just the three. This is just for debugging. #ifndef NDEBUG if (_quality >= 102) { - write_reals(datagram, &qr[0], length); + if (length == 0) { + write_reals(datagram, NULL, length); + } else { + write_reals(datagram, &qr[0], length); + } } #endif - write_reals(datagram, &qi[0], length); - write_reals(datagram, &qj[0], length); - write_reals(datagram, &qk[0], length); + if (length == 0) { + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + write_reals(datagram, NULL, length); + } else { + write_reals(datagram, &qi[0], length); + write_reals(datagram, &qj[0], length); + write_reals(datagram, &qk[0], length); + } } ////////////////////////////////////////////////////////////////////