Jeff King <peff@xxxxxxxx> writes: > So actually, that's pretty easy to do without writing much code at all. > Something like: > > #define xgetenv(name) strintern(getenv(name)) > > It means we're effectively storing the environment twice in the worst > case, but that's probably not a big deal. Unless we have a loop which > does repeated setenv()/getenv() calls, the strintern hashmap can't grow > without bound. Makes sense. hashmap.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hashmap.h b/hashmap.h index d375d9cce7..cff77f9890 100644 --- a/hashmap.h +++ b/hashmap.h @@ -432,6 +432,8 @@ static inline void hashmap_enable_item_counting(struct hashmap *map) extern const void *memintern(const void *data, size_t len); static inline const char *strintern(const char *string) { + if (!string) + return string; return memintern(string, strlen(string)); }