++ if (index(str, '=') == NULL)
+ return (-1);
++#endif /* __DARWIN_UNIX03 */
++ /* insure __zone0 is set up before calling __malloc_check_env_name */
++ if (!__zone0) {
++ __zone0 = malloc_create_zone(0, 0);
++ if (!__zone0) {
++ errno = ENOMEM;
++ return (-1);
++ }
+ }
+- *equal = '\0';
+- rval = setenv(p, equal + 1, 1);
+- (void)free(p);
+- return (rval);
++ __malloc_check_env_name(str); /* see if we are changing a malloc environment variable */
++ return (__setenv(str, NULL, 1,
++#if __DARWIN_UNIX03
++ 0,
++#else /* !__DARWIN_UNIX03 */
++ -1,