From dae91f15401bb72c8148f977b2a93a46c2346122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Mon, 17 Sep 2018 17:12:58 +0200 Subject: [PATCH] [apps] VariableBoxController: get rid of variable-size table --- apps/code/variable_box_controller.cpp | 5 ++++- apps/code/variable_box_controller.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/code/variable_box_controller.cpp b/apps/code/variable_box_controller.cpp index af5652a95..49baf8e25 100644 --- a/apps/code/variable_box_controller.cpp +++ b/apps/code/variable_box_controller.cpp @@ -53,9 +53,11 @@ void VariableBoxController::ContentViewController::viewWillAppear() { m_scriptStore->scanScriptsForFunctionsAndVariables( this, [](void * context, const char * functionName, int scriptIndex) { + if (strlen(functionName)+1 > k_maxScriptObjectNameSize) { return; } VariableBoxController::ContentViewController * cvc = static_cast(context); cvc->addFunctionAtIndex(functionName, scriptIndex);}, [](void * context, const char * variableName, int scriptIndex) { + if (strlen(variableName)+1 > k_maxScriptObjectNameSize) { return; } VariableBoxController::ContentViewController * cvc = static_cast(context); cvc->addVariableAtIndex(variableName, scriptIndex);}); } @@ -119,7 +121,8 @@ void VariableBoxController::ContentViewController::willDisplayCellForIndex(Highl void VariableBoxController::ContentViewController::insertTextInCaller(const char * text) { int commandBufferMaxSize = strlen(text)+1; - char commandBuffer[commandBufferMaxSize]; + char commandBuffer[k_maxScriptObjectNameSize]; + assert(commandBufferMaxSize <= k_maxScriptObjectNameSize); Shared::ToolboxHelpers::TextToInsertForCommandText(text, commandBuffer, commandBufferMaxSize, true); m_textInputCaller->handleEventWithText(commandBuffer); } diff --git a/apps/code/variable_box_controller.h b/apps/code/variable_box_controller.h index 71518a741..31ad39f2c 100644 --- a/apps/code/variable_box_controller.h +++ b/apps/code/variable_box_controller.h @@ -43,6 +43,7 @@ private: int reusableCellCount() override; void willDisplayCellForIndex(HighlightCell * cell, int index) override; private: + constexpr static int k_maxScriptObjectNameSize = 100; constexpr static int k_maxNumberOfDisplayedRows = 6; //240/40 constexpr static int k_maxScriptNodesCount = 32; void insertTextInCaller(const char * text);