Duy Nguyen <pclouds@xxxxxxxxx> writes: > OK so your question was if there was a git_path() or mkpath() call > earlier in update_refs_for_switch() and the result was expected to > remain stable till the end of update_refs_for_switch(), then this > conversion could ruin it, correct? I didn't think about that,... Yeah, I couldn't tell if you thought about it, and that was why I asked. If a (recursively) caller does this: caller () { const char *path1 = git_path(...); const char *path2 = mkpath(...); const char *path3 = git_path_submodule(...); callee(); use(path1, path2, path3); } it was safe back when the callee() did not mess with the round-robin pathname buffer, but it will be broken once callee() does. While looking at the patch I didn't check what the caller was doing hence my question. In general, in order to reduce that kind of hard-to-debug bugs, we should be reducing the uses of these functions when we do not have to (which applies equally to such a caller that expects multiple temporary paths to persist, and to a callee as well). Adding multiple repeated calls to git_path(), especially two of them formatting the same string into two separate round-robin pathname buffer, looked strange in a patch that was supposed to be a preparatory code-cleanup stage. -- 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