From c23b07bdda2ea09fd474cdf5653cbe51c8e59103 Mon Sep 17 00:00:00 2001 From: Dan Nixon Date: Sun, 16 Jul 2017 09:14:00 +0100 Subject: [PATCH] Pad table strings in the CMS Ensures that switching from a longer string to a shorter one does not leave chars from the longer string. e.g. BATTERY -> GYRO would result in GYROERY --- src/main/cms/cms.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/cms/cms.c b/src/main/cms/cms.c index bd6039eb3..00fe8d2d3 100644 --- a/src/main/cms/cms.c +++ b/src/main/cms/cms.c @@ -41,6 +41,7 @@ #include "cms/cms_menu_builtin.h" #include "cms/cms_types.h" +#include "common/maths.h" #include "common/typeconversion.h" #include "drivers/system.h" @@ -260,7 +261,8 @@ static void cmsPadToSize(char *buf, int size) static int cmsDrawMenuEntry(displayPort_t *pDisplay, OSD_Entry *p, uint8_t row) { - char buff[10]; + #define CMS_DRAW_BUFFER_LEN 10 + char buff[CMS_DRAW_BUFFER_LEN]; int cnt = 0; switch (p->type) { @@ -306,8 +308,10 @@ static int cmsDrawMenuEntry(displayPort_t *pDisplay, OSD_Entry *p, uint8_t row) case OME_TAB: if (IS_PRINTVALUE(p)) { OSD_TAB_t *ptr = p->data; - //cnt = displayWrite(pDisplay, RIGHT_MENU_COLUMN(pDisplay) - 5, row, (char *)ptr->names[*ptr->val]); - cnt = displayWrite(pDisplay, RIGHT_MENU_COLUMN(pDisplay), row, (char *)ptr->names[*ptr->val]); + char * str = (char *)ptr->names[*ptr->val]; + memcpy(buff, str, MAX(CMS_DRAW_BUFFER_LEN, strlen(str))); + cmsPadToSize(buff, CMS_DRAW_BUFFER_LEN); + cnt = displayWrite(pDisplay, RIGHT_MENU_COLUMN(pDisplay), row, buff); CLR_PRINTVALUE(p); } break;