| | @@ -303,12 +303,14 @@ |
| 303 | 303 | |
| 304 | 304 | /* Release memory resources */ |
| 305 | 305 | blob_reset(&out); |
| 306 | 306 | }else{ |
| 307 | 307 | Blob cmd; |
| 308 | | - char zTemp1[300]; |
| 309 | | - char zTemp2[300]; |
| 308 | + Blob temp1; |
| 309 | + Blob temp2; |
| 310 | + Blob prefix1; |
| 311 | + Blob prefix2; |
| 310 | 312 | |
| 311 | 313 | if( !fIncludeBinary ){ |
| 312 | 314 | if( isBin1 || isBin2 ){ |
| 313 | 315 | fossil_print("%s",DIFF_CANNOT_COMPUTE_BINARY); |
| 314 | 316 | return; |
| | @@ -321,30 +323,41 @@ |
| 321 | 323 | return; |
| 322 | 324 | } |
| 323 | 325 | glob_free(pBinary); |
| 324 | 326 | } |
| 325 | 327 | } |
| 328 | + |
| 329 | + /* Construct a prefix for the temporary file names */ |
| 330 | + blob_zero(&prefix1); |
| 331 | + blob_zero(&prefix2); |
| 332 | + blob_appendf(&prefix1, "%s-v1", zName); |
| 333 | + blob_appendf(&prefix2, "%s-v2", zName); |
| 326 | 334 | |
| 327 | 335 | /* Construct a temporary file names */ |
| 328 | | - file_tempname(sizeof(zTemp1), zTemp1); |
| 329 | | - file_tempname(sizeof(zTemp2), zTemp2); |
| 330 | | - blob_write_to_file(pFile1, zTemp1); |
| 331 | | - blob_write_to_file(pFile2, zTemp2); |
| 336 | + file_tempname(&temp1, blob_str(&prefix1)); |
| 337 | + file_tempname(&temp2, blob_str(&prefix2)); |
| 338 | + blob_write_to_file(pFile1, blob_str(&temp1)); |
| 339 | + blob_write_to_file(pFile2, blob_str(&temp2)); |
| 332 | 340 | |
| 333 | 341 | /* Construct the external diff command */ |
| 334 | 342 | blob_zero(&cmd); |
| 335 | 343 | blob_appendf(&cmd, "%s ", zDiffCmd); |
| 336 | | - shell_escape(&cmd, zTemp1); |
| 344 | + shell_escape(&cmd, blob_str(&temp1)); |
| 337 | 345 | blob_append(&cmd, " ", 1); |
| 338 | | - shell_escape(&cmd, zTemp2); |
| 346 | + shell_escape(&cmd, blob_str(&temp2)); |
| 339 | 347 | |
| 340 | 348 | /* Run the external diff command */ |
| 341 | 349 | fossil_system(blob_str(&cmd)); |
| 342 | 350 | |
| 343 | 351 | /* Delete the temporary file and clean up memory used */ |
| 344 | | - file_delete(zTemp1); |
| 345 | | - file_delete(zTemp2); |
| 352 | + file_delete(blob_str(&temp1)); |
| 353 | + file_delete(blob_str(&temp2)); |
| 354 | + |
| 355 | + blob_reset(&prefix1); |
| 356 | + blob_reset(&prefix2); |
| 357 | + blob_reset(&temp1); |
| 358 | + blob_reset(&temp2); |
| 346 | 359 | blob_reset(&cmd); |
| 347 | 360 | } |
| 348 | 361 | } |
| 349 | 362 | |
| 350 | 363 | /* |
| 351 | 364 | |