From 26979226f226201e4aa9ed69cdcff74290472061 Mon Sep 17 00:00:00 2001 From: zzulilyw Date: Tue, 19 Aug 2025 15:27:05 +0800 Subject: [PATCH] test env new logic Issue: https://gitee.com/openharmony/third_party_musl/issues/ICTNU9 Signed-off-by: zzulilyw --- src/env/putenv.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/env/putenv.c b/src/env/putenv.c index dce8c8288..33ae4bac4 100644 --- a/src/env/putenv.c +++ b/src/env/putenv.c @@ -19,6 +19,24 @@ int __putenv(char *s, size_t l, char *r) } static char **oldenv; char **newenv; +#ifndef __LITEOS__ + static size_t capacity = 0; + if (__environ == oldenv) { + if (i+2 <= capacity) { + newenv = oldenv; + } else { + newenv = realloc(oldenv, sizeof *newenv * (i+2)); + if (!newenv) goto oom; + capacity = i+2; + } + } else { + capacity = (i+2 > 40) ? (i+2) : 40; + newenv = malloc(sizeof *newenv * capacity); + if (!newenv) goto oom; + if (i) memcpy(newenv, __environ, sizeof *newenv * i); + free(oldenv); + } +#else if (__environ == oldenv) { newenv = realloc(oldenv, sizeof *newenv * (i+2)); if (!newenv) goto oom; @@ -28,6 +46,7 @@ int __putenv(char *s, size_t l, char *r) if (i) memcpy(newenv, __environ, sizeof *newenv * i); free(oldenv); } +#endif newenv[i] = s; newenv[i+1] = 0; __environ = oldenv = newenv; -- Gitee