We need to keep hold of the strings which we create. We must also hold on to the array of strings which we assing to our git_strarray. We were not doing the latter, which meant that our strings may have been freed too early, leaving us with with memory access errors (though often not leading to a crash due to the custom allocator in python). As we need to keep hold of two/three pieces of information, this looks like a good place to introduce a context manager. This allows us to keep these pointers alive without burdening the call sites with a return of multiple objects they have no use for.
17 KiB
17 KiB