diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-06-11 06:26:19 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-06-11 06:26:19 +0000 |
commit | f2184b2024ffae23462e8e0fec009f4cd9c95c00 (patch) | |
tree | 2851c1e3de6cdfdf28617f1b0c2a3df585d136e6 /hash.c | |
parent | 528c61b5b7b0ff3a40a004d3fba6582791250a0f (diff) |
* hash.c (ruby_setenv): readline library leaves their environment
strings uncopied. "free" check revised.
* st.c (numhash): should shuffle bits by dividing by prime number.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'hash.c')
-rw-r--r-- | hash.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -1063,8 +1063,12 @@ ruby_setenv(name, value) environ = tmpenv; /* tell exec where it is now */ } if (!value) { - if (environ[i] != origenviron[i]) - free(environ[i]); + if (environ != origenviron) { + char **envp = origenviron; + while (*envp && *envp != environ[i]) envp++; + if (!*envp) + free(environ[i]); + } while (environ[i]) { environ[i] = environ[i+1]; i++; |