about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/env/putenv.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/env/putenv.c b/src/env/putenv.c
index 181a4181..d141db13 100644
--- a/src/env/putenv.c
+++ b/src/env/putenv.c
@@ -9,14 +9,14 @@ char **__env_map;
 int __putenv(char *s, int a)
 {
 	int i=0, j=0;
-	char *end = strchr(s, '=');
-	size_t l = end-s+1;
+	char *z = strchr(s, '=');
 	char **newenv = 0;
 	char **newmap = 0;
 	static char **oldenv;
-	
-	if (!end || l == 1) return -1;
-	for (; __environ[i] && memcmp(s, __environ[i], l); i++);
+
+	if (!z) return unsetenv(s);
+	if (z==s) return -1;
+	for (; __environ[i] && memcmp(s, __environ[i], z-s+1); i++);
 	if (a) {
 		if (!__env_map) {
 			__env_map = calloc(2, sizeof(char *));