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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to