From 66e62fc9eff9b3e2df3b7d49a4fa27db5476572f Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Tue, 21 Apr 2026 12:47:27 +0700 Subject: [PATCH] Revert "fix(esp_libc): picolibc: add workaround for setvbuf on _IONBF" This reverts commit 8b3414ba511db7d7fac0e8ee703542e2ab300033. --- components/esp_libc/CMakeLists.txt | 4 +- .../esp_libc/src/picolibc/bufio_setvbuf.c | 39 ------------------- 2 files changed, 1 insertion(+), 42 deletions(-) delete mode 100644 components/esp_libc/src/picolibc/bufio_setvbuf.c diff --git a/components/esp_libc/CMakeLists.txt b/components/esp_libc/CMakeLists.txt index 83fe92efe3d..2d11737adae 100644 --- a/components/esp_libc/CMakeLists.txt +++ b/components/esp_libc/CMakeLists.txt @@ -77,9 +77,7 @@ else() list(APPEND srcs "src/picolibc/picolibc_init.c" "src/picolibc/rand.c" - "src/picolibc/errno.c" - "src/picolibc/bufio_setvbuf.c") # TODO IDF-15494: remove this and the following lines - list(APPEND EXTRA_LINK_FLAGS "-Wl,--wrap=__bufio_setvbuf") + "src/picolibc/errno.c") if(CONFIG_LIBC_PICOLIBC_NEWLIB_COMPATIBILITY) list(APPEND srcs "src/picolibc/getreent.c") list(APPEND srcs "src/picolibc/fopencookie.c") diff --git a/components/esp_libc/src/picolibc/bufio_setvbuf.c b/components/esp_libc/src/picolibc/bufio_setvbuf.c deleted file mode 100644 index 5a925631338..00000000000 --- a/components/esp_libc/src/picolibc/bufio_setvbuf.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ -#include -#include -#include - -int __real___bufio_setvbuf(FILE *f, char *buf, int mode, size_t size); -int __wrap___bufio_setvbuf(FILE *f, char *buf, int mode, size_t size) -{ - // File lock is already acquired by the caller - int ret = -1; - bool workaround = false; - if (mode == _IONBF) { - workaround = true; - mode = _IOFBF; - size = 1; - buf = malloc(size); - if (buf == NULL) { - goto exit; - } - } - ret = __real___bufio_setvbuf(f, buf, mode, size); - if (workaround) { - struct __file_bufio *bf = (struct __file_bufio *)f; - - // Free buf if not applied - if (ret != 0 || bf->buf != buf) { - free(buf); - goto exit; - } - bf->bflags |= __BALL; - } - -exit: - return ret; -}