Kirill Smelkov wrote: > static void run_service(const char **argv) > { > const char *encoding = getenv("HTTP_CONTENT_ENCODING"); > const char *user = getenv("REMOTE_USER"); > const char *host = getenv("REMOTE_ADDR"); > > > etc... > > > To me, it's very unfortunate that subsequent getenv() could overwrite > previous getenv() result, but according to `man 3 getenv` all these > places are buggy. Right, but do we know of any platforms that work that way currently? We could make getenv() rotate between a few buffers on such platforms (probably 10 or so would take care of the longest runs). > Maybe we'll need something like our own xgetenv() which will keep vars > in some kind of hash tab so that get/put on other vars do not interfere > with what was originally returned by xgetenv(). For examples that store the result like you pointed out (which store the result from getenv), something like that would be needed if we want them to work on platforms where putenv shifts everything. > Unfortunately I can't afford myself to dive into all this, so please > choose what you like more. I think we ought to fix this properly in the end. But if you want a quick workaround, maybe the vcs-svn/string_pool lib could help you. Hope that helps, Jonathan -- 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