Fix decoding of escape sequences in format strings:
- Zero-terminate the resulting string by letting the for-loop copy the terminating zero. - Exit the for-loop after handling a backslash at the end of the format string to fix a buffer overrun. - Remove some unnecessary comments and blank lines. [1] Requested by: bde [1] PR: bin/144722 Approved by: kib (mentor)
This commit is contained in:
parent
3617a03b5b
commit
1450485621
@ -451,21 +451,14 @@ escape(char *p1)
|
||||
char *p2;
|
||||
|
||||
/* alphabetic escape sequences have to be done in place */
|
||||
for (p2 = p1; *p1; p1++, p2++) {
|
||||
/*
|
||||
* Let's take a peak at the next item and see whether or not
|
||||
* we need to escape the value...
|
||||
*/
|
||||
for (p2 = p1;; p1++, p2++) {
|
||||
if (*p1 == '\\') {
|
||||
|
||||
p1++;
|
||||
|
||||
switch(*p1) {
|
||||
/* A standalone `\' */
|
||||
case '\0':
|
||||
*p2 = '\\';
|
||||
*++p2 = '\0';
|
||||
break;
|
||||
return;
|
||||
case 'a':
|
||||
/* *p2 = '\a'; */
|
||||
*p2 = '\007';
|
||||
@ -492,12 +485,12 @@ escape(char *p1)
|
||||
*p2 = *p1;
|
||||
break;
|
||||
}
|
||||
|
||||
} else
|
||||
} else {
|
||||
*p2 = *p1;
|
||||
|
||||
if (*p1 == '\0')
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user