diff options
Diffstat (limited to 'sysif.c')
-rw-r--r-- | sysif.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -703,8 +703,12 @@ val getenv_wrap(val name) static val setenv_wrap(val name, val value, val overwrite) { char *nameu8 = utf8_dup_to(c_str(name)); - char *valu8 = utf8_dup_to(c_str(value)); - setenv(nameu8, valu8, default_arg(overwrite, t) != nil); + char *valu8 = value ? utf8_dup_to(c_str(value)) : 0; + int ovw = default_arg(overwrite, t) != nil; + if (valu8) + setenv(nameu8, valu8, ovw); + else if (ovw) + unsetenv(nameu8); free(valu8); free(nameu8); return value; |