Hi fellows, I'm planning on applying on GSOC 2014... I tried my luck with that kinda weird microproject about inefficiencies, and I think I've discovered some. (also on a totally different mood, there are some warning about empty format strings during compilation that could easily be silenced with some #pragma calls on "-Wformat-zero-length". Is there a way you're not adding this?) The empty buffers check could happen at the beggining. Leading whitespace check was unnecessary. Some style changes Thanks. --- builtin/apply.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/builtin/apply.c b/builtin/apply.c index b0d0986..df2435f 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -294,20 +294,16 @@ static int fuzzy_matchlines(const char *s1, size_t n1, const char *last2 = s2 + n2 - 1; int result = 0; + /* early return if both lines are empty */ + if ((s1 > last1) && (s2 > last2)) + return 1; + /* ignore line endings */ while ((*last1 == '\r') || (*last1 == '\n')) last1--; while ((*last2 == '\r') || (*last2 == '\n')) last2--; - /* skip leading whitespace */ - while (isspace(*s1) && (s1 <= last1)) - s1++; - while (isspace(*s2) && (s2 <= last2)) - s2++; - /* early return if both lines are empty */ - if ((s1 > last1) && (s2 > last2)) - return 1; while (!result) { result = *s1++ - *s2++; /* @@ -315,18 +311,15 @@ static int fuzzy_matchlines(const char *s1, size_t n1, * both buffers because we don't want "a b" to match * "ab" */ - if (isspace(*s1) && isspace(*s2)) { - while (isspace(*s1) && s1 <= last1) - s1++; - while (isspace(*s2) && s2 <= last2) - s2++; - } + while (isspace(*s1) && s1 <= last1) + s1++; + while (isspace(*s2) && s2 <= last2) + s2++; /* * If we reached the end on one side only, * lines don't match */ - if ( - ((s2 > last2) && (s1 <= last1)) || + if (((s2 > last2) && (s1 <= last1)) || ((s1 > last1) && (s2 <= last2))) return 0; if ((s1 > last1) && (s2 > last2)) -- 1.9.0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html