Jeff King <peff@xxxxxxxx> writes: > The memory ownership of the "argv" array of a "struct child_process" can > be tricky. The child_process does not own the memory, but it must remain > valid until finish_command runs. That's easy for cases where we call > start_command and finish_command in the same function: you can use a > local array variable, or use an argv_array and cleanup afterwards. > > But it's easy to screw up in cases where you want to start a command in > one function and finish it in another, either by pointing to invalid > storage during finish_command, or by leaking dynamically allocated > memory. > > This series sticks an argv_array inside the "struct child_process", > which we clean up automatically. Because some callers might not want to > use it, it's optional. If you provide "argv", we use that, and > otherwise fall back to the internal array. > > The first commit below does that. The second fixes an uninitialized > memory access. 3, 4, and 5 plug memory leaks. 6 is just a cleanup for > consistency with the changes in 4 and 5. > > And in 2, 3, and 5 we are introducing argv_array into new spots, which > simplifies the code and gets rid of magic numbers. Nicely done. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html