Fossil SCM
Fix [a56db55924]: Crash on STASH DIFF command
Commit
1c39f113d13a767b546583ae2704deeff88b78f3
Parent
14768c24e508037…
1 file changed
+3
-2
+3
-2
| --- src/stash.c | ||
| +++ src/stash.c | ||
| @@ -311,11 +311,11 @@ | ||
| 311 | 311 | int isLink = db_column_int(&q, 3); |
| 312 | 312 | int isBin1, isBin2; |
| 313 | 313 | const char *zOrig = db_column_text(&q, 4); |
| 314 | 314 | const char *zNew = db_column_text(&q, 5); |
| 315 | 315 | char *zOPath = mprintf("%s%s", g.zLocalRoot, zOrig); |
| 316 | - Blob delta, a, b, disk; | |
| 316 | + Blob a, b; | |
| 317 | 317 | if( rid==0 ){ |
| 318 | 318 | db_ephemeral_blob(&q, 6, &a); |
| 319 | 319 | fossil_print("ADDED %s\n", zNew); |
| 320 | 320 | diff_print_index(zNew, diffFlags); |
| 321 | 321 | isBin1 = 0; |
| @@ -337,10 +337,11 @@ | ||
| 337 | 337 | isBin1 = fIncludeBinary ? 0 : looks_like_binary(&a); |
| 338 | 338 | isBin2 = 0; |
| 339 | 339 | diff_file_mem(&a, &empty, isBin1, isBin2, zOrig, zDiffCmd, |
| 340 | 340 | zBinGlob, fIncludeBinary, diffFlags); |
| 341 | 341 | }else{ |
| 342 | + Blob delta, disk; | |
| 342 | 343 | int isOrigLink = file_wd_islink(zOPath); |
| 343 | 344 | db_ephemeral_blob(&q, 6, &delta); |
| 344 | 345 | if( fBaseline==0 ){ |
| 345 | 346 | if( isOrigLink ){ |
| 346 | 347 | blob_read_link(&disk, zOPath); |
| @@ -363,12 +364,12 @@ | ||
| 363 | 364 | zDiffCmd, zBinGlob, fIncludeBinary, diffFlags); |
| 364 | 365 | blob_reset(&a); |
| 365 | 366 | blob_reset(&b); |
| 366 | 367 | } |
| 367 | 368 | if( !fBaseline ) blob_reset(&disk); |
| 369 | + blob_reset(&delta); | |
| 368 | 370 | } |
| 369 | - blob_reset(&delta); | |
| 370 | 371 | } |
| 371 | 372 | db_finalize(&q); |
| 372 | 373 | } |
| 373 | 374 | |
| 374 | 375 | /* |
| 375 | 376 |
| --- src/stash.c | |
| +++ src/stash.c | |
| @@ -311,11 +311,11 @@ | |
| 311 | int isLink = db_column_int(&q, 3); |
| 312 | int isBin1, isBin2; |
| 313 | const char *zOrig = db_column_text(&q, 4); |
| 314 | const char *zNew = db_column_text(&q, 5); |
| 315 | char *zOPath = mprintf("%s%s", g.zLocalRoot, zOrig); |
| 316 | Blob delta, a, b, disk; |
| 317 | if( rid==0 ){ |
| 318 | db_ephemeral_blob(&q, 6, &a); |
| 319 | fossil_print("ADDED %s\n", zNew); |
| 320 | diff_print_index(zNew, diffFlags); |
| 321 | isBin1 = 0; |
| @@ -337,10 +337,11 @@ | |
| 337 | isBin1 = fIncludeBinary ? 0 : looks_like_binary(&a); |
| 338 | isBin2 = 0; |
| 339 | diff_file_mem(&a, &empty, isBin1, isBin2, zOrig, zDiffCmd, |
| 340 | zBinGlob, fIncludeBinary, diffFlags); |
| 341 | }else{ |
| 342 | int isOrigLink = file_wd_islink(zOPath); |
| 343 | db_ephemeral_blob(&q, 6, &delta); |
| 344 | if( fBaseline==0 ){ |
| 345 | if( isOrigLink ){ |
| 346 | blob_read_link(&disk, zOPath); |
| @@ -363,12 +364,12 @@ | |
| 363 | zDiffCmd, zBinGlob, fIncludeBinary, diffFlags); |
| 364 | blob_reset(&a); |
| 365 | blob_reset(&b); |
| 366 | } |
| 367 | if( !fBaseline ) blob_reset(&disk); |
| 368 | } |
| 369 | blob_reset(&delta); |
| 370 | } |
| 371 | db_finalize(&q); |
| 372 | } |
| 373 | |
| 374 | /* |
| 375 |
| --- src/stash.c | |
| +++ src/stash.c | |
| @@ -311,11 +311,11 @@ | |
| 311 | int isLink = db_column_int(&q, 3); |
| 312 | int isBin1, isBin2; |
| 313 | const char *zOrig = db_column_text(&q, 4); |
| 314 | const char *zNew = db_column_text(&q, 5); |
| 315 | char *zOPath = mprintf("%s%s", g.zLocalRoot, zOrig); |
| 316 | Blob a, b; |
| 317 | if( rid==0 ){ |
| 318 | db_ephemeral_blob(&q, 6, &a); |
| 319 | fossil_print("ADDED %s\n", zNew); |
| 320 | diff_print_index(zNew, diffFlags); |
| 321 | isBin1 = 0; |
| @@ -337,10 +337,11 @@ | |
| 337 | isBin1 = fIncludeBinary ? 0 : looks_like_binary(&a); |
| 338 | isBin2 = 0; |
| 339 | diff_file_mem(&a, &empty, isBin1, isBin2, zOrig, zDiffCmd, |
| 340 | zBinGlob, fIncludeBinary, diffFlags); |
| 341 | }else{ |
| 342 | Blob delta, disk; |
| 343 | int isOrigLink = file_wd_islink(zOPath); |
| 344 | db_ephemeral_blob(&q, 6, &delta); |
| 345 | if( fBaseline==0 ){ |
| 346 | if( isOrigLink ){ |
| 347 | blob_read_link(&disk, zOPath); |
| @@ -363,12 +364,12 @@ | |
| 364 | zDiffCmd, zBinGlob, fIncludeBinary, diffFlags); |
| 365 | blob_reset(&a); |
| 366 | blob_reset(&b); |
| 367 | } |
| 368 | if( !fBaseline ) blob_reset(&disk); |
| 369 | blob_reset(&delta); |
| 370 | } |
| 371 | } |
| 372 | db_finalize(&q); |
| 373 | } |
| 374 | |
| 375 | /* |
| 376 |