I'm sorry I had it backwards, as if you wanted to invoke a random re-setup behavior.
One thing that causes a reset is executing a null function, and these pointer assignments look a little suspicious. What are you trying to do here?
I think 'temperature' might be zero or junk, and temperature.temperature might be something unexpected. Are you sure you are using all the references and pointers correctly?