Commit 38c7b224 authored by Linus Torvalds's avatar Linus Torvalds

unifdef: use memcpy instead of strncpy

New versions of gcc reasonably warn about the odd pattern of

	strncpy(p, q, strlen(q));

which really doesn't make sense: the strncpy() ends up being just a slow
and odd way to write memcpy() in this case.

There was a comment about _why_ the code used strncpy - to avoid the
terminating NUL byte, but memcpy does the same and avoids the warning.
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent b6839ef2
...@@ -395,7 +395,7 @@ usage(void) ...@@ -395,7 +395,7 @@ usage(void)
* When we have processed a group that starts off with a known-false * When we have processed a group that starts off with a known-false
* #if/#elif sequence (which has therefore been deleted) followed by a * #if/#elif sequence (which has therefore been deleted) followed by a
* #elif that we don't understand and therefore must keep, we edit the * #elif that we don't understand and therefore must keep, we edit the
* latter into a #if to keep the nesting correct. We use strncpy() to * latter into a #if to keep the nesting correct. We use memcpy() to
* overwrite the 4 byte token "elif" with "if " without a '\0' byte. * overwrite the 4 byte token "elif" with "if " without a '\0' byte.
* *
* When we find a true #elif in a group, the following block will * When we find a true #elif in a group, the following block will
...@@ -450,7 +450,7 @@ static void Idrop (void) { Fdrop(); ignoreon(); } ...@@ -450,7 +450,7 @@ static void Idrop (void) { Fdrop(); ignoreon(); }
static void Itrue (void) { Ftrue(); ignoreon(); } static void Itrue (void) { Ftrue(); ignoreon(); }
static void Ifalse(void) { Ffalse(); ignoreon(); } static void Ifalse(void) { Ffalse(); ignoreon(); }
/* modify this line */ /* modify this line */
static void Mpass (void) { strncpy(keyword, "if ", 4); Pelif(); } static void Mpass (void) { memcpy(keyword, "if ", 4); Pelif(); }
static void Mtrue (void) { keywordedit("else"); state(IS_TRUE_MIDDLE); } static void Mtrue (void) { keywordedit("else"); state(IS_TRUE_MIDDLE); }
static void Melif (void) { keywordedit("endif"); state(IS_FALSE_TRAILER); } static void Melif (void) { keywordedit("endif"); state(IS_FALSE_TRAILER); }
static void Melse (void) { keywordedit("endif"); state(IS_FALSE_ELSE); } static void Melse (void) { keywordedit("endif"); state(IS_FALSE_ELSE); }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment