From 2d43407eebcbcbbb0f146178b51cf4ed640bedf6 Mon Sep 17 00:00:00 2001 From: Harry Moffat Date: Fri, 2 Jul 2004 14:58:45 +0000 Subject: [PATCH] Fixed an error in a calling routine. Fixed an error involving passing a pointer through an integer array, when the length of the pointer is longer than the length of a single integer. Basically, you have to cast first to the longer variable, before assigning. --- Cantera/src/DASPK.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Cantera/src/DASPK.cpp b/Cantera/src/DASPK.cpp index 9f39a545a..5fedb370d 100755 --- a/Cantera/src/DASPK.cpp +++ b/Cantera/src/DASPK.cpp @@ -42,9 +42,11 @@ extern "C" { const doublereal* y, const doublereal* yprime, const doublereal* cj, doublereal* delta, integer* ires, doublereal* rpar, integer* ipar) { - void* hndl = (void*)ipar[0]; + void **iddres_res = reinterpret_cast(&(ipar[0])); + void *hndl = *iddres_res; Cantera::ResidEval* f = (Cantera::ResidEval*)hndl; - f->evalResid(*t, y, yprime, delta); + double delta_t = 0.0; + f->evalResid(*t, delta_t, y, yprime, delta); } static void ddaspk_jac() {} @@ -84,7 +86,9 @@ namespace Cantera { m_iwork.resize(20); // " m_ipar.resize(2); m_rpar.resize(2); - m_ipar[0] = integer((void*)(&m_resid)); + void *iddr = static_cast(&m_resid); + void **iddr_ipar = reinterpret_cast(&(m_ipar[0])); + *iddr_ipar = iddr; setTolerances(1.e-7, 1.e-15); }