Use starts_with() for C strings instead of memcmp()
PATCH 1/1 Use starts_with() for C strings instead of memcmp()
Convert three cases of checking for a constant prefix using memcmp() to starts_with(). This way there is no need for magic string length constants and we avoid running over the end of the string should it be shorter than the prefix.
Signed-off-by Rene Scharfe <[email protected]>
---
These are the easy cases I found; there are several more comparisons of strings to constants using memcmp(). Some could benefit from skip_prefix(), others may need a bit more thought, and perhaps I missed a few.
builtin/for-each-ref.c | 2 +- fetch-pack.c | 2 +- remote.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)
builtin/for-each-ref.c +1 -1
@@ -193,7 +193,7 @@ static int verify_format(const char *format) at =parse_atom (sp +2 , ep); cp = ep +1 ; -if (!memcmp (used_atom[at],"color:" ,6 )) +if (starts_with (used_atom[at],"color:" )) need_color_reset_at_eol = !!strcmp (used_atom[at], color_reset); }return 0 ;
fetch-pack.c +1 -1
@@ -507,7 +507,7 @@ static void filter_refs(struct fetch_pack_args *args,int keep =0 ; next = ref->next; -if (!memcmp (ref->name,"refs/" ,5 ) && +if (starts_with (ref->name,"refs/" ) &&check_refname_format (ref->name,0 )) ;/* trash */ else {
remote.c +1 -1
@@ -1194,7 +1194,7 @@ static int match_explicit(struct ref *src, struct ref *dst,case 1 :break ;case 0 : -if (!memcmp (dst_value,"refs/" ,5 )) +if (starts_with (dst_value,"refs/" )) matched_dst =make_linked_ref (dst_value, dst_tail);else if (is_null_sha1 (matched_src->new_sha1)) error("unable to delete '%s': remote ref does not exist",
Signature · 1 line
2.0.0