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_) { |