> > Ah...yes, you're right. I forgot to build before running the tests. I'll
> > take a look.
> 
> Thanks.

Thanks once again for taking a look. It turns out that it's because
progress messages are sometimes split across PKT-LINEs depending on your
luck, and we need to retain the "leftover" on a \2 sideband in order to
combine it with the next one if necessary. So, for example, the
following fixup works:

        diff --git a/sideband.c b/sideband.c
        index c185c38637..d5da587d68 100644
        --- a/sideband.c
        +++ b/sideband.c
        @@ -117,7 +117,7 @@ static void maybe_colorize_sideband(struct strbuf 
*dest, const char *src, int n)
         int demultiplex_sideband(const char *me, char *buf, int len, int 
die_on_error)
         {
                static const char *suffix;
        -       struct strbuf outbuf = STRBUF_INIT;
        +       static struct strbuf outbuf = STRBUF_INIT;
                int retval = 0;
                const char *b, *brk;
                int band;
        @@ -187,8 +187,7 @@ int demultiplex_sideband(const char *me, char *buf, 
int len, int die_on_error)
                                            "" : DISPLAY_PREFIX);
                                maybe_colorize_sideband(&outbuf, b, strlen(b));
                        }
        -               retval = SIDEBAND_PROGRESS;
        -               break;
        +               return SIDEBAND_PROGRESS; /* skip cleanup */
                case 1:
                        retval = SIDEBAND_PRIMARY;
                        break;

We could make the caller of demultiplex_sideband() store the outbuf, but
at this point, it might be better to refactor packet_reader into its own
file and have it depend on both pkt-line.h and sideband.h. If you (or
anyone else) have any ideas, let me know what you think. I'll think
further about this too.

Reply via email to