{"id":2234839,"url":"http://patchwork.ozlabs.org/api/1.2/covers/2234839/?format=json","web_url":"http://patchwork.ozlabs.org/project/glibc/cover/20260508060410.13725-1-gaoxiang@kylinos.cn/","project":{"id":41,"url":"http://patchwork.ozlabs.org/api/1.2/projects/41/?format=json","name":"GNU C Library","link_name":"glibc","list_id":"libc-alpha.sourceware.org","list_email":"libc-alpha@sourceware.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260508060410.13725-1-gaoxiang@kylinos.cn>","list_archive_url":null,"date":"2026-05-08T06:04:08","name":"[v5,0/2] libio: Keep memstream result buffers independent of setvbuf","submitter":{"id":92909,"url":"http://patchwork.ozlabs.org/api/1.2/people/92909/?format=json","name":"Gao Xiang","email":"gaoxiang@kylinos.cn"},"mbox":"http://patchwork.ozlabs.org/project/glibc/cover/20260508060410.13725-1-gaoxiang@kylinos.cn/mbox/","series":[{"id":503327,"url":"http://patchwork.ozlabs.org/api/1.2/series/503327/?format=json","web_url":"http://patchwork.ozlabs.org/project/glibc/list/?series=503327","date":"2026-05-08T06:04:09","name":"libio: Keep memstream result buffers independent of setvbuf","version":5,"mbox":"http://patchwork.ozlabs.org/series/503327/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/2234839/comments/","headers":{"Return-Path":"<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":["incoming@patchwork.ozlabs.org","libc-alpha@sourceware.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","libc-alpha@sourceware.org"],"Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n dmarc=none (p=none dis=none) header.from=kylinos.cn","sourceware.org; spf=pass smtp.mailfrom=kylinos.cn","sourceware.org;\n arc=none smtp.remote-ip=124.126.103.232"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gBdwL3Xm1z1yJq\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 08 May 2026 16:08:34 +1000 (AEST)","from vm01.sourceware.org (localhost [IPv6:::1])\n\tby sourceware.org (Postfix) with ESMTP id 8725A4BA2E07\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  8 May 2026 06:08:32 +0000 (GMT)","from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232])\n by sourceware.org (Postfix) with ESMTPS id 3E0C44BA2E2D\n for <libc-alpha@sourceware.org>; Fri,  8 May 2026 06:08:09 +0000 (GMT)","from bogon [(117.61.28.11)] by mailgw.kylinos.cn\n (envelope-from <gaoxiang@kylinos.cn>)\n (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256)\n with ESMTP id 1098105744; Fri, 08 May 2026 14:06:25 +0800"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 8725A4BA2E07","OpenDKIM Filter v2.11.0 sourceware.org 3E0C44BA2E2D"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 3E0C44BA2E2D","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 3E0C44BA2E2D","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1778220490; cv=none;\n b=h71VrUxb0izE9L3DAgw/KgRv/44VJyDE2W7MZ2qJ35ppJSq7bw8kMHFjBNHtl3iSVgXRP1ura2sM6Mw9xygrlhmxvYuJ8NyRbS9tushqRQkQJe5vQExpQwKeO3XQqZ6P7udr8mvne7HKo7KoT+coacyDnUaOF45pcPjKTibOHm4=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1778220490; c=relaxed/simple;\n bh=NZevZLdvMKDJR8Xe77CKw8zIAztPArNtX1CxrFJSe6U=;\n h=From:To:Subject:Date:Message-ID:MIME-Version;\n b=COI+zLWHHnMabMUfB16CJ2DOE4w0vUmpd8WW6IywquMgXt3UWzS1bDYkyXQMIi/7DdBnUeuRZzXVHH8kBpRjw5dKjvsstM+IWJiAQxmSMLRkbWWAHQtAcjQB2tBOZP7DOyuvl0K1zZvd6I8OPvzZlMIBbtFiP8JJvZ9hbljSh4o=","ARC-Authentication-Results":"i=1; sourceware.org","X-UUID":["0b6777c04aa411f1aa26b74ffac11d73-20260508","0b6777c04aa411f1aa26b74ffac11d73-20260508"],"X-CTIC-Tags":"HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NAME, HR_CTE_8B,\n HR_CTT_MISS\n HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME, HR_SJ_DIGIT_LEN\n HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM, HR_SJ_PHRASE\n HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NO_NAME\n IP_UNTRUSTED, SRC_UNTRUSTED, IP_UNFAMILIAR, SRC_UNFAMILIAR, DN_TRUSTED\n SRC_TRUSTED, SA_EXISTED, SN_TRUSTED, SN_EXISTED, SPF_NOPASS\n DKIM_NOPASS, DMARC_NOPASS","X-CID-O-RULE":"Release_Ham","X-CID-RULE":"Release_Ham","X-CID-O-INFO":"VERSION:1.3.12, REQID:6310c4b0-ffd1-4667-b68e-a81400d27465,\n IP:10,\n URL:0,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTIO\n N:release,TS:5","X-CID-INFO":"VERSION:1.3.12, REQID:6310c4b0-ffd1-4667-b68e-a81400d27465, IP:10,\n UR\n L:0,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTION:\n release,TS:5","X-CID-META":"VersionHash:e7bac3a, CLOUDID:15b22eff48cc6af7979c10ba694ae800,\n BulkI\n D:260508140625BX3IODUT,BulkQuantity:0,Recheck:0,SF:17|19|66|78|81|82|102|1\n 27|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:0,File:nil,RT:nil,Bulk:nil,\n QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0\n ,ARC:0","X-CID-BVR":"2,SSN|SDN","X-CID-BAS":"2,SSN|SDN,0,_","X-CID-FACTOR":"TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD","X-CID-RHF":"D41D8CD98F00B204E9800998ECF8427E","X-User":"gaoxiang@kylinos.cn","From":"Gao Xiang <gaoxiang@kylinos.cn>","To":"libc-alpha@sourceware.org","Cc":"Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>,\n Andreas Schwab <schwab@suse.de>, Rocket Ma <marocketbd@gmail.com>,\n Xiang Gao <gaoxiang@kylinos.cn>","Subject":"[PATCH v5 0/2] libio: Keep memstream result buffers independent of\n setvbuf","Date":"Fri,  8 May 2026 14:04:08 +0800","Message-ID":"<20260508060410.13725-1-gaoxiang@kylinos.cn>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260507094000.22966-1-gaoxiang@kylinos.cn>","References":"<20260507094000.22966-1-gaoxiang@kylinos.cn>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-BeenThere":"libc-alpha@sourceware.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Libc-alpha mailing list <libc-alpha.sourceware.org>","List-Unsubscribe":"<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>","List-Archive":"<https://sourceware.org/pipermail/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-request@sourceware.org?subject=help>","List-Subscribe":"<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>","Errors-To":"libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org"},"content":"From: Xiang Gao <gaoxiang@kylinos.cn>\n\nThis series fixes two paths where setbuf/setvbuf can interfere with \nthe growable result buffers managed by open_memstream and\nopen_wmemstream.\n\nPatch 1 keeps the v2 setbuf fix: memstream-specific setbuf hooks keep\nthe internal growable result buffer unchanged.\n\nPatch 2 handles the setvbuf (stream, NULL, _IOFBF, 0) path, which can\ncall _IO_DOALLOCATE and return without invoking the stream setbuf hook. \n\nChanges in v5:\n * Address coding-style comments following the GNU Coding Standards:\n   - Drop unrelated style changes in existing libioP.h declarations.\n   - Remove unnecessary casts for unused hook parameters.\n   - Fix GNU comment spacing.\n\nChanges in v4:\n * Refactor the test cases in both patches by using libio/tst-memstream.h,\n   so that the regression tests cover both open_memstream and\n   open_wmemstream, as suggested by Andreas Schwab.\n * Use TEST_VERIFY_EXIT for pointer guard checks.\n * Fix typos.\n\nTested on x86_64-linux-gnu with no regression:\n  make -j$(nproc) subdirs=libio check\n\n\nXiang Gao (2):\n  libio: Ignore setbuf for open_memstream and open_wmemstream [BZ\n    #34019]\n  libio: Ignore doallocate for open_memstream and open_wmemstream [BZ\n    #34019]\n\n libio/Makefile                            |  4 ++\n libio/libioP.h                            |  6 +++\n libio/memstream.c                         | 17 +++++++\n libio/tst-memstream-setbuf.c              | 41 +++++++++++++++\n libio/tst-memstream-setvbuf-doallocate.c  | 61 +++++++++++++++++++++++\n libio/tst-wmemstream-setbuf.c             | 20 ++++++++\n libio/tst-wmemstream-setvbuf-doallocate.c | 20 ++++++++\n libio/vtables.c                           | 12 +++--\n libio/wmemstream.c                        | 17 +++++++\n 9 files changed, 194 insertions(+), 4 deletions(-)\n create mode 100644 libio/tst-memstream-setbuf.c\n create mode 100644 libio/tst-memstream-setvbuf-doallocate.c\n create mode 100644 libio/tst-wmemstream-setbuf.c\n create mode 100644 libio/tst-wmemstream-setvbuf-doallocate.c"}