Resolve Wrestrict warnings on GCC 8.1.1 (#51)

* Fix several misleading indentation warnings on GCC 8.1.1

* Fix reliance on undefined strcpy/sprintf behavior (-Wrestrict warnings)

The standard states that strcpy results in undefined behavior when the source
and destination buffers overlap. I resolved this with a combination of memmove
and strlen. Note that the resulting code is slightly less efficient.

Similarly, sprintf's behavior is undefined when copying takes place between
objects that overlap. I replaced most of these with a simple strcat, though
one required a temp buffer.

* Fix format in improved-edit.c to match surrounding code
This commit is contained in:
Kevin Fischer
2018-07-14 13:11:47 -05:00
committed by wyld-sw
parent f9903c05b3
commit 5cca63a01c
4 changed files with 7 additions and 4 deletions

View File

@@ -358,7 +358,9 @@ void parse_edit_action(int command, char *string, struct descriptor_data *d)
s++;
temp = *s;
*s = '\0';
sprintf(buf, "%s%4d: ", buf, (i - 1));
char buf3[8];
sprintf(buf3, "%4d: ", (i - 1));
strcat(buf, buf3);
strcat(buf, t);
*s = temp;
t = s;