diff --git a/src/buffer.c b/src/buffer.c index 8687d5537..ef95839f6 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -426,10 +426,13 @@ int git_buf_common_prefix(git_buf *buf, const git_strarray *strings) if (!strings || !strings->count) return 0; + /* initialize common prefix to first string */ if (git_buf_sets(buf, strings->strings[0]) < 0) return -1; + /* go through the rest of the strings, truncating to shared prefix */ for (i = 1; i < strings->count; ++i) { + for (str = strings->strings[i], pfx = buf->ptr; *str && *str == *pfx; str++, pfx++) /* scanning */; diff --git a/src/buffer.h b/src/buffer.h index 5a0e7d7b2..af760f901 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -122,6 +122,7 @@ void git_buf_rtrim(git_buf *buf); int git_buf_cmp(const git_buf *a, const git_buf *b); +/* Fill buf with the common prefix of a array of strings */ int git_buf_common_prefix(git_buf *buf, const git_strarray *strings); #endif