Changeset View
Changeset View
Standalone View
Standalone View
lib/libc/stdlib/getenv.c
Show First 20 Lines • Show All 274 Lines • ▼ Show 20 Lines | __rebuild_environ(int newEnvironSize) | ||||
if (newEnvironSize > environSize) { | if (newEnvironSize > environSize) { | ||||
tmpEnvironSize = newEnvironSize * 2; | tmpEnvironSize = newEnvironSize * 2; | ||||
tmpEnviron = reallocarray(intEnviron, tmpEnvironSize + 1, | tmpEnviron = reallocarray(intEnviron, tmpEnvironSize + 1, | ||||
sizeof(*intEnviron)); | sizeof(*intEnviron)); | ||||
if (tmpEnviron == NULL) | if (tmpEnviron == NULL) | ||||
return (-1); | return (-1); | ||||
environSize = tmpEnvironSize; | environSize = tmpEnvironSize; | ||||
intEnviron = tmpEnviron; | intEnviron = tmpEnviron; | ||||
} | } | ||||
kib: environSize * sizeof(*intEnviron) is the common subexpression in both src and size. I suspect… | |||||
envActive = newEnvironSize; | envActive = newEnvironSize; | ||||
/* Assign active variables to environ. */ | /* Assign active variables to environ. */ | ||||
for (envNdx = envVarsTotal - 1, environNdx = 0; envNdx >= 0; envNdx--) | for (envNdx = envVarsTotal - 1, environNdx = 0; envNdx >= 0; envNdx--) | ||||
if (envVars[envNdx].active) | if (envVars[envNdx].active) | ||||
intEnviron[environNdx++] = envVars[envNdx].name; | intEnviron[environNdx++] = envVars[envNdx].name; | ||||
intEnviron[environNdx] = NULL; | intEnviron[environNdx] = NULL; | ||||
▲ Show 20 Lines • Show All 220 Lines • ▼ Show 20 Lines | __setenv(const char *name, size_t nameLen, const char *value, int overwrite) | ||||
} | } | ||||
else | else | ||||
env = envVars[envNdx].value; | env = envVars[envNdx].value; | ||||
/* Save value of name/value pair. */ | /* Save value of name/value pair. */ | ||||
strcpy(env, value); | strcpy(env, value); | ||||
envVars[envNdx].value = env; | envVars[envNdx].value = env; | ||||
envVars[envNdx].active = true; | envVars[envNdx].active = true; | ||||
envVars[envNdx].putenv = false; | |||||
newEnvActive++; | newEnvActive++; | ||||
/* No need to rebuild environ if an active variable was reused. */ | /* No need to rebuild environ if an active variable was reused. */ | ||||
if (reuse && newEnvActive == envActive) | if (reuse && newEnvActive == envActive) | ||||
return (0); | return (0); | ||||
else | else | ||||
return (__rebuild_environ(newEnvActive)); | return (__rebuild_environ(newEnvActive)); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 166 Lines • Show Last 20 Lines |
environSize * sizeof(*intEnviron) is the common subexpression in both src and size. I suspect that extracting it into temp variable would improve readability (there and in second chunk)