diff options
author | Rafaël Carré <rafael.carre@gmail.com> | 2009-08-11 16:12:03 +0000 |
---|---|---|
committer | Rafaël Carré <rafael.carre@gmail.com> | 2009-08-11 16:12:03 +0000 |
commit | 9a5174c8a3a1a2a358be57ecb72fa2740b10cd0d (patch) | |
tree | 14ae27cf4eae86d8e64d1dcaece7549531f328c2 | |
parent | e74ba2b63d687bff39defd82cec1f04fb35f5921 (diff) | |
download | rockbox-9a5174c8a3a1a2a358be57ecb72fa2740b10cd0d.tar.gz rockbox-9a5174c8a3a1a2a358be57ecb72fa2740b10cd0d.zip |
Fix logf() multilines handling
Each line (of MAX_LOGF_ENTRY characters) would be marked with
LOGF_TERMINATE_CONTINUE_LINE, but still be padded with a '\0'
This also reverts r22250 which worked around the problem in logfdump()
Flyspray: FS#10513
Author: Amaury Pouly
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22253 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/logfdisp.c | 4 | ||||
-rw-r--r-- | firmware/logf.c | 9 |
2 files changed, 7 insertions, 6 deletions
diff --git a/apps/logfdisp.c b/apps/logfdisp.c index c7f7e74ec4..da711bf1d3 100644 --- a/apps/logfdisp.c +++ b/apps/logfdisp.c | |||
@@ -190,8 +190,8 @@ bool logfdump(void) | |||
190 | ptr = buffer; | 190 | ptr = buffer; |
191 | do { | 191 | do { |
192 | tindex++; | 192 | tindex++; |
193 | memcpy(ptr, logfbuffer[tindex], MAX_LOGF_ENTRY-1); | 193 | memcpy(ptr, logfbuffer[tindex], MAX_LOGF_ENTRY); |
194 | ptr += MAX_LOGF_ENTRY-1; | 194 | ptr += MAX_LOGF_ENTRY; |
195 | if (tindex >= MAX_LOGF_LINES) | 195 | if (tindex >= MAX_LOGF_LINES) |
196 | tindex = 0; | 196 | tindex = 0; |
197 | } while(logfbuffer[tindex][MAX_LOGF_ENTRY] == LOGF_TERMINATE_CONTINUE_LINE); | 197 | } while(logfbuffer[tindex][MAX_LOGF_ENTRY] == LOGF_TERMINATE_CONTINUE_LINE); |
diff --git a/firmware/logf.c b/firmware/logf.c index 6e3e532450..02ab79d0a0 100644 --- a/firmware/logf.c +++ b/firmware/logf.c | |||
@@ -145,16 +145,17 @@ void _logf(const char *format, ...) | |||
145 | while(len > MAX_LOGF_ENTRY) | 145 | while(len > MAX_LOGF_ENTRY) |
146 | { | 146 | { |
147 | ptr = logfbuffer[logfindex]; | 147 | ptr = logfbuffer[logfindex]; |
148 | strlcpy(ptr, buf + tlen, MAX_LOGF_ENTRY); | 148 | memcpy(ptr, buf + tlen, MAX_LOGF_ENTRY); |
149 | ptr[MAX_LOGF_ENTRY] = LOGF_TERMINATE_CONTINUE_LINE; | 149 | ptr[MAX_LOGF_ENTRY] = LOGF_TERMINATE_CONTINUE_LINE; |
150 | logfindex++; | 150 | logfindex++; |
151 | check_logfindex(); | 151 | check_logfindex(); |
152 | len -= MAX_LOGF_ENTRY-1; | 152 | len -= MAX_LOGF_ENTRY; |
153 | tlen += MAX_LOGF_ENTRY-1; | 153 | tlen += MAX_LOGF_ENTRY; |
154 | multiline = true; | 154 | multiline = true; |
155 | } | 155 | } |
156 | |||
156 | ptr = logfbuffer[logfindex]; | 157 | ptr = logfbuffer[logfindex]; |
157 | strcpy(ptr, buf + tlen); | 158 | memcpy(ptr, buf + tlen,len-tlen); |
158 | 159 | ||
159 | if(len < MAX_LOGF_ENTRY) | 160 | if(len < MAX_LOGF_ENTRY) |
160 | /* pad with spaces up to the MAX_LOGF_ENTRY byte border */ | 161 | /* pad with spaces up to the MAX_LOGF_ENTRY byte border */ |