Fossil SCM
Bug fix in the handling of tabs on a side-by-side diff.
Commit
07a0ade926f3bd8af3d1a2cd55b095d6967d8c18
Parent
5bbe190a8c21186…
1 file changed
+4
-4
+4
-4
| --- src/diff.c | ||
| +++ src/diff.c | ||
| @@ -384,20 +384,20 @@ | ||
| 384 | 384 | ** spaces. Add a newline if SBS_NEWLINE is set. Translate HTML characters |
| 385 | 385 | ** if SBS_HTML is set. Pad the rendering out width bytes if SBS_PAD is set. |
| 386 | 386 | */ |
| 387 | 387 | static void sbsWriteText(SbsLine *p, DLine *pLine, unsigned flags){ |
| 388 | 388 | int n = pLine->h & LENGTH_MASK; |
| 389 | - int i, j; | |
| 389 | + int i, j, k; | |
| 390 | 390 | const char *zIn = pLine->z; |
| 391 | 391 | char *z = &p->zLine[p->n]; |
| 392 | 392 | int w = p->width; |
| 393 | 393 | if( n>w ) n = w; |
| 394 | - for(i=j=0; i<n; i++){ | |
| 394 | + for(i=j=k=0; k<n; i++, k++){ | |
| 395 | 395 | char c = zIn[i]; |
| 396 | 396 | if( c=='\t' ){ |
| 397 | 397 | z[j++] = ' '; |
| 398 | - while( (j&7)!=0 && j<n ) z[j++] = ' '; | |
| 398 | + while( (k&7)!=0 && k<n ){ z[j++] = ' '; k++; } | |
| 399 | 399 | }else if( c=='\r' || c=='\f' ){ |
| 400 | 400 | z[j++] = ' '; |
| 401 | 401 | }else if( c=='<' && p->escHtml ){ |
| 402 | 402 | memcpy(&z[j], "<", 4); |
| 403 | 403 | j += 4; |
| @@ -414,11 +414,11 @@ | ||
| 414 | 414 | if( (flags & SBS_ENDSPAN) && p->escHtml ){ |
| 415 | 415 | memcpy(&z[j], "</span>", 7); |
| 416 | 416 | j += 7; |
| 417 | 417 | } |
| 418 | 418 | if( (flags & SBS_PAD)!=0 ){ |
| 419 | - while( i<w ){ i++; z[j++] = ' '; } | |
| 419 | + while( k<w ){ k++; z[j++] = ' '; } | |
| 420 | 420 | } |
| 421 | 421 | if( flags & SBS_NEWLINE ){ |
| 422 | 422 | z[j++] = '\n'; |
| 423 | 423 | } |
| 424 | 424 | p->n += j; |
| 425 | 425 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -384,20 +384,20 @@ | |
| 384 | ** spaces. Add a newline if SBS_NEWLINE is set. Translate HTML characters |
| 385 | ** if SBS_HTML is set. Pad the rendering out width bytes if SBS_PAD is set. |
| 386 | */ |
| 387 | static void sbsWriteText(SbsLine *p, DLine *pLine, unsigned flags){ |
| 388 | int n = pLine->h & LENGTH_MASK; |
| 389 | int i, j; |
| 390 | const char *zIn = pLine->z; |
| 391 | char *z = &p->zLine[p->n]; |
| 392 | int w = p->width; |
| 393 | if( n>w ) n = w; |
| 394 | for(i=j=0; i<n; i++){ |
| 395 | char c = zIn[i]; |
| 396 | if( c=='\t' ){ |
| 397 | z[j++] = ' '; |
| 398 | while( (j&7)!=0 && j<n ) z[j++] = ' '; |
| 399 | }else if( c=='\r' || c=='\f' ){ |
| 400 | z[j++] = ' '; |
| 401 | }else if( c=='<' && p->escHtml ){ |
| 402 | memcpy(&z[j], "<", 4); |
| 403 | j += 4; |
| @@ -414,11 +414,11 @@ | |
| 414 | if( (flags & SBS_ENDSPAN) && p->escHtml ){ |
| 415 | memcpy(&z[j], "</span>", 7); |
| 416 | j += 7; |
| 417 | } |
| 418 | if( (flags & SBS_PAD)!=0 ){ |
| 419 | while( i<w ){ i++; z[j++] = ' '; } |
| 420 | } |
| 421 | if( flags & SBS_NEWLINE ){ |
| 422 | z[j++] = '\n'; |
| 423 | } |
| 424 | p->n += j; |
| 425 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -384,20 +384,20 @@ | |
| 384 | ** spaces. Add a newline if SBS_NEWLINE is set. Translate HTML characters |
| 385 | ** if SBS_HTML is set. Pad the rendering out width bytes if SBS_PAD is set. |
| 386 | */ |
| 387 | static void sbsWriteText(SbsLine *p, DLine *pLine, unsigned flags){ |
| 388 | int n = pLine->h & LENGTH_MASK; |
| 389 | int i, j, k; |
| 390 | const char *zIn = pLine->z; |
| 391 | char *z = &p->zLine[p->n]; |
| 392 | int w = p->width; |
| 393 | if( n>w ) n = w; |
| 394 | for(i=j=k=0; k<n; i++, k++){ |
| 395 | char c = zIn[i]; |
| 396 | if( c=='\t' ){ |
| 397 | z[j++] = ' '; |
| 398 | while( (k&7)!=0 && k<n ){ z[j++] = ' '; k++; } |
| 399 | }else if( c=='\r' || c=='\f' ){ |
| 400 | z[j++] = ' '; |
| 401 | }else if( c=='<' && p->escHtml ){ |
| 402 | memcpy(&z[j], "<", 4); |
| 403 | j += 4; |
| @@ -414,11 +414,11 @@ | |
| 414 | if( (flags & SBS_ENDSPAN) && p->escHtml ){ |
| 415 | memcpy(&z[j], "</span>", 7); |
| 416 | j += 7; |
| 417 | } |
| 418 | if( (flags & SBS_PAD)!=0 ){ |
| 419 | while( k<w ){ k++; z[j++] = ' '; } |
| 420 | } |
| 421 | if( flags & SBS_NEWLINE ){ |
| 422 | z[j++] = '\n'; |
| 423 | } |
| 424 | p->n += j; |
| 425 |