From 46c3d08e9ce894bfd7e870794ace27fea212d96e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Wed, 17 May 2017 17:54:32 +0200 Subject: [PATCH 1/2] [apps/shared] Fix bug Change-Id: Iabe1f5cda948af9c38a67828fc1a64de1a726b8a --- apps/shared/interactive_curve_view_controller.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) { From 197e296474fd861d7e53719350fe816755e32579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Thu, 18 May 2017 09:38:33 +0200 Subject: [PATCH 2/2] [apps/sequence][app/graph] Repare checksum Change-Id: I4d47331e291c9cf39a06f59736ca035eb839fa09 --- apps/graph/cartesian_function_store.cpp | 8 ++++++-- apps/sequence/sequence_store.cpp | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) 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) {