| Index: delta_performer.cc
|
| diff --git a/delta_performer.cc b/delta_performer.cc
|
| index 7ee9d4fb20976e0db6a23d178a23e1da6ccf20c8..d1110158f5f33f287e8ac33798803a7d18cb72f2 100644
|
| --- a/delta_performer.cc
|
| +++ b/delta_performer.cc
|
| @@ -446,7 +446,7 @@ bool DeltaPerformer::PerformBsdiffOperation(
|
| }
|
|
|
| int fd = is_kernel_partition ? kernel_fd_ : fd_;
|
| - const string& path = is_kernel_partition ? kernel_path_ : path_;
|
| + const string& path = StringPrintf("/dev/fd/%d", fd);
|
|
|
| // If this is a non-idempotent operation, request a delayed exit and clear the
|
| // update state in case the operation gets interrupted. Do this as late as
|
| @@ -464,7 +464,10 @@ bool DeltaPerformer::PerformBsdiffOperation(
|
| cmd.push_back(input_positions);
|
| cmd.push_back(output_positions);
|
| int return_code = 0;
|
| - TEST_AND_RETURN_FALSE(Subprocess::SynchronousExec(cmd, &return_code));
|
| + TEST_AND_RETURN_FALSE(
|
| + Subprocess::SynchronousExecFlags(cmd,
|
| + &return_code,
|
| + G_SPAWN_LEAVE_DESCRIPTORS_OPEN));
|
| TEST_AND_RETURN_FALSE(return_code == 0);
|
|
|
| if (operation.dst_length() % block_size_) {
|
|
|