For the diff of diffs, we have more than one character at the beginning
of the line with special meaning, so let's pass around a string that
contains all the markup for the line

Signed-off-by: Stefan Beller <sbel...@google.com>
---
 diff.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/diff.c b/diff.c
index 32500716740..028d7d9a59c 100644
--- a/diff.c
+++ b/diff.c
@@ -969,7 +969,7 @@ static void dim_moved_lines(struct diff_options *o)
 static void emit_line_ws_markup(struct diff_options *o,
                                const char *set, const char *reset,
                                const char *line, int len,
-                               const char *set_sign, char sign,
+                               const char *set_sign, const char *sign,
                                unsigned ws_rule, int blank_at_eof)
 {
        const char *ws = NULL;
@@ -981,19 +981,19 @@ static void emit_line_ws_markup(struct diff_options *o,
        }
 
        if (!ws && !set_sign)
-               emit_line_0(o, set, 0, reset, sign, line, len);
+               emit_line_0(o, set, 0, reset, sign[0], line, len);
        else if (!ws) {
                /* Emit just the prefix, then the rest. */
                emit_line_0(o, set_sign ? set_sign : set, !!set_sign, reset,
-                           sign, "", 0);
+                           sign[0], "", 0);
                emit_line_0(o, set, 0, reset, 0, line, len);
        } else if (blank_at_eof)
                /* Blank line at EOF - paint '+' as well */
-               emit_line_0(o, ws, 0, reset, sign, line, len);
+               emit_line_0(o, ws, 0, reset, sign[0], line, len);
        else {
                /* Emit just the prefix, then the rest. */
                emit_line_0(o, set_sign ? set_sign : set, !!set_sign, reset,
-                           sign, "", 0);
+                           sign[0], "", 0);
                ws_check_emit(line, len, ws_rule,
                              o->file, set, reset, ws);
        }
@@ -1054,7 +1054,7 @@ static void emit_diff_symbol_from_struct(struct 
diff_options *o,
                        else if (c == '-')
                                set = diff_get_color_opt(o, DIFF_FILE_OLD);
                }
-               emit_line_ws_markup(o, set, reset, line, len, set_sign, ' ',
+               emit_line_ws_markup(o, set, reset, line, len, set_sign, " ",
                                    flags & (DIFF_SYMBOL_CONTENT_WS_MASK), 0);
                break;
        case DIFF_SYMBOL_PLUS:
@@ -1100,7 +1100,7 @@ static void emit_diff_symbol_from_struct(struct 
diff_options *o,
                                len--;
                        }
                }
-               emit_line_ws_markup(o, set, reset, line, len, set_sign, '+',
+               emit_line_ws_markup(o, set, reset, line, len, set_sign, "+",
                                    flags & DIFF_SYMBOL_CONTENT_WS_MASK,
                                    flags & DIFF_SYMBOL_CONTENT_BLANK_LINE_EOF);
                break;
@@ -1141,7 +1141,7 @@ static void emit_diff_symbol_from_struct(struct 
diff_options *o,
                        else if (c != '-')
                                set = diff_get_color_opt(o, DIFF_CONTEXT);
                }
-               emit_line_ws_markup(o, set, reset, line, len, set_sign, '-',
+               emit_line_ws_markup(o, set, reset, line, len, set_sign, "-",
                                    flags & DIFF_SYMBOL_CONTENT_WS_MASK, 0);
                break;
        case DIFF_SYMBOL_WORDS_PORCELAIN:
-- 
2.18.0.203.gfac676dfb9-goog

Reply via email to