summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/lcd-scroll.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/firmware/drivers/lcd-scroll.c b/firmware/drivers/lcd-scroll.c
index 0e17303bd3..dd6a6fe8cb 100644
--- a/firmware/drivers/lcd-scroll.c
+++ b/firmware/drivers/lcd-scroll.c
@@ -140,6 +140,7 @@ void LCDFN(jump_scroll_delay)(int ms)
140 * Returns true if the text scrolled to the end */ 140 * Returns true if the text scrolled to the end */
141bool LCDFN(scroll_now)(struct scrollinfo *s) 141bool LCDFN(scroll_now)(struct scrollinfo *s)
142{ 142{
143 int len;
143 int width = LCDFN(getstringsize)(s->linebuffer, NULL, NULL); 144 int width = LCDFN(getstringsize)(s->linebuffer, NULL, NULL);
144 bool ended = false; 145 bool ended = false;
145 /* assume s->scroll_func() don't yield; otherwise this buffer might need 146 /* assume s->scroll_func() don't yield; otherwise this buffer might need
@@ -164,8 +165,12 @@ bool LCDFN(scroll_now)(struct scrollinfo *s)
164 } 165 }
165 else 166 else
166 { 167 {
167 snprintf(line_buf, sizeof(line_buf)-1, "%s%s%s", 168 len = snprintf(line_buf, sizeof(line_buf)-1, "%s%s%s",
168 s->linebuffer, " ", s->linebuffer); 169 s->linebuffer, " ", s->linebuffer);
170
171 if ((unsigned) len > sizeof(line_buf))
172 do { } while (0); /* ignore truncation */
173
169 s->line = line_buf; 174 s->line = line_buf;
170 width += LCDFN(getstringsize)(" ", NULL, NULL); 175 width += LCDFN(getstringsize)(" ", NULL, NULL);
171 /* scroll forward the whole time */ 176 /* scroll forward the whole time */