diff --git a/apps/graph/cartesian_function_store.cpp b/apps/graph/cartesian_function_store.cpp index 9f72f83ac..087fcb3a8 100644 --- a/apps/graph/cartesian_function_store.cpp +++ b/apps/graph/cartesian_function_store.cpp @@ -18,9 +18,13 @@ CartesianFunctionStore::CartesianFunctionStore() : } uint32_t CartesianFunctionStore::storeChecksum() { - size_t dataLengthInBytes = m_numberOfFunctions*sizeof(CartesianFunction); + size_t dataLengthInBytes = k_maxNumberOfFunctions*TextField::maxBufferSize()*sizeof(char); assert((dataLengthInBytes & 0x3) == 0); // Assert that dataLengthInBytes is a multiple of 4 - return Ion::crc32((uint32_t *)m_functions, dataLengthInBytes>>2); + char data[k_maxNumberOfFunctions*TextField::maxBufferSize()] = {}; + for (int i = 0; i < k_maxNumberOfFunctions; i++) { + strlcpy(data+i*TextField::maxBufferSize(), m_functions[i].text(), TextField::maxBufferSize()); + } + return Ion::crc32((uint32_t *)data, dataLengthInBytes>>2); } CartesianFunction * CartesianFunctionStore::functionAtIndex(int i) { diff --git a/apps/sequence/sequence_store.cpp b/apps/sequence/sequence_store.cpp index 409962fb8..7a107baf7 100644 --- a/apps/sequence/sequence_store.cpp +++ b/apps/sequence/sequence_store.cpp @@ -11,9 +11,15 @@ constexpr KDColor SequenceStore::k_defaultColors[k_maxNumberOfSequences]; constexpr const char * SequenceStore::k_sequenceNames[k_maxNumberOfSequences]; uint32_t SequenceStore::storeChecksum() { - size_t dataLengthInBytes = m_numberOfFunctions*sizeof(Sequence); + size_t dataLengthInBytes = k_maxNumberOfSequences*3*TextField::maxBufferSize()*sizeof(char); assert((dataLengthInBytes & 0x3) == 0); // Assert that dataLengthInBytes is a multiple of 4 - return Ion::crc32((uint32_t *)m_sequences, dataLengthInBytes>>2); + char data[3*k_maxNumberOfSequences*TextField::maxBufferSize()] = {}; + for (int i = 0; i < k_maxNumberOfSequences; i++) { + strlcpy(data+i*3*TextField::maxBufferSize(), m_sequences[i].text(), TextField::maxBufferSize()); + strlcpy(data+i*3*TextField::maxBufferSize()+TextField::maxBufferSize(), m_sequences[i].firstInitialConditionText(), TextField::maxBufferSize()); + strlcpy(data+i*3*TextField::maxBufferSize()+2*TextField::maxBufferSize(), m_sequences[i].secondInitialConditionText(), TextField::maxBufferSize()); + } + return Ion::crc32((uint32_t *)data, dataLengthInBytes>>2); } Sequence * SequenceStore::functionAtIndex(int i) { diff --git a/apps/shared/interactive_curve_view_controller.cpp b/apps/shared/interactive_curve_view_controller.cpp index 2d275e203..6d6b03e78 100644 --- a/apps/shared/interactive_curve_view_controller.cpp +++ b/apps/shared/interactive_curve_view_controller.cpp @@ -150,8 +150,8 @@ void InteractiveCurveViewController::viewWillAppear() { curveView()->selectMainView(true); header()->setSelectedButton(-1); reloadBannerView(); - curveView()->reload(); curveView()->setOkView(&m_okView); + curveView()->reload(); } void InteractiveCurveViewController::didEnterResponderChain(Responder * previousFirstResponder) {