Thread (40 messages) 40 messages, 4 authors, 2016-08-15

Re: [PATCH 8/8] diff: improve positioning of add/delete blocks in diffs

flat view

From: Jacob Keller <hidden>
Date: 2016-08-03 22:30:13

On Wed, Aug 3, 2016 at 3:00 PM, Michael Haggerty [off-list ref] wrote:
quoted hunk ↗ jump to hunk
+/*
+ * If a line is indented more than this, get_indent() just returns this value.
+ * This avoids having to do absurd amounts of work for data that are not
+ * human-readable text, and also ensures that the output of get_indent fits within
+ * an int.
+ */
+#define MAX_INDENT 200
+
+/*
+ * Return the amount of indentation of the specified line, treating TAB as 8
+ * columns. Return -1 if line is empty or contains only whitespace. Clamp the
+ * output value at MAX_INDENT.
+ */
+static int get_indent(xrecord_t *rec)
+{
+       long i;
+       int ret = 0;
+
+       for (i = 0; i < rec->size; i++) {
+               char c = rec->ptr[i];
+
+               if (!XDL_ISSPACE(c))
+                       return ret;
+               else if (c == ' ')
+                       ret += 1;
+               else if (c == '\t')
+                       ret += 8 - ret % 8;
+               /* ignore other whitespace characters */
+
+               if (ret >= MAX_INDENT)
+                       return MAX_INDENT;
Should we return -1 here?
quoted hunk ↗ jump to hunk
+       }
+       /*
+        * We have reached the end of the line without finding any non-space
+        * characters; i.e., the whole line consists of trailing spaces, which we
+        * are not interested in.
+        */
+       return -1;
It seems odd to be that a line with "199" spaces and nothing else will
return "-1" but a line with 200 spaces and nothing else will return
200..? Would it be safe to just return -1 in both cases (if a line is
all spaces or starts with more than 200 spaces just return -1)?
+}
+
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help