From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oo1-xc34.google.com (mail-oo1-xc34.google.com [IPv6:2607:f8b0:4864:20::c34]) by sourceware.org (Postfix) with ESMTPS id 36B193858C2C for ; Fri, 18 Mar 2022 18:11:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 36B193858C2C Received: by mail-oo1-xc34.google.com with SMTP id k13-20020a4a948d000000b003172f2f6bdfso11090972ooi.1 for ; Fri, 18 Mar 2022 11:11:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=iBdOiyfXK8I2JocSvnnt8d0awEOeXSwf1QIkLVO5ur0=; b=UE55mkOighclgFIrjtGTTCENwZ2rdgy/O4JwZW5qM+aBvybeSqbuIuO2nih677xArQ lO8/w+xeQAI0NOeK/hQAInFWdIXckVpjvlkizBStOtouI1PPYYhGL+q7+4FORs/Rhcty lV7vgTfxVKna0XVnn60lLziP3yhfV/Cqmmp3iJ5GBhXuNimDPmvqzL3mhmBqOShNbEsH OKE2Vm1NetbGjgVTijopEXnL56cWsLymPqR265QGqT2FUlftRwsQdBLiBdAt1by7TWOi /y1wzYaESPJ2T7l5puyf28z6YlRXfOAQdQgZeFDc3SgosOOc/rXAe/oTXHJoIo4QkgLp nqZQ== X-Gm-Message-State: AOAM532B1x5AVO00+xEmQYn4OnP1+ORj/7hvAoXeYRCDCAcwNAdO1r04 pjlYdebFSV9V6WBVhQAOX36hY4Wp59ieRw== X-Google-Smtp-Source: ABdhPJzaBC0bqmQeIJWR8oIyP0qNSHOQNKzXIqzl6JshLqxSnpluLeB+KYCNYpGLuMJ2SPpvq0XSZQ== X-Received: by 2002:a05:6870:c090:b0:dd:be4e:d5ce with SMTP id c16-20020a056870c09000b000ddbe4ed5cemr3157426oad.179.1647627118495; Fri, 18 Mar 2022 11:11:58 -0700 (PDT) Received: from ?IPV6:2804:431:c7ca:99a3:99e2:1060:da92:ae49? ([2804:431:c7ca:99a3:99e2:1060:da92:ae49]) by smtp.gmail.com with ESMTPSA id k22-20020a056830243600b005af5fb99326sm3953628ots.63.2022.03.18.11.11.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 18 Mar 2022 11:11:58 -0700 (PDT) Message-ID: <2b11f23c-cd88-6eea-9c70-c26769f62e85@linaro.org> Date: Fri, 18 Mar 2022 15:11:55 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [PATCH 02/26] libio: Flush-only _IO_str_overflow must not return EOF (bug 28949) Content-Language: en-US To: Florian Weimer , libc-alpha@sourceware.org References: From: Adhemerval Zanella In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Mar 2022 18:12:00 -0000 On 17/03/2022 16:28, Florian Weimer via Libc-alpha wrote: > In general, _IO_str_overflow returns the character passed as an argument > on success. However, if flush-only operation is requested by passing > EOF, returning EOF looks like an error, and the caller cannot tell > whether the operation was successful or not. > > _IO_wstr_overflow had the same bug regarding WEOF. LGTM, thanks. Reviewed-by: Adhemerval Zanella > --- > libio/strops.c | 5 ++++- > libio/wstrops.c | 5 ++++- > 2 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/libio/strops.c b/libio/strops.c > index 6a9a8846c4..1cd0bf6c3d 100644 > --- a/libio/strops.c > +++ b/libio/strops.c > @@ -133,7 +133,10 @@ _IO_str_overflow (FILE *fp, int c) > *fp->_IO_write_ptr++ = (unsigned char) c; > if (fp->_IO_write_ptr > fp->_IO_read_end) > fp->_IO_read_end = fp->_IO_write_ptr; > - return c; > + if (flush_only) > + return 0; > + else > + return c; > } > libc_hidden_def (_IO_str_overflow) > > diff --git a/libio/wstrops.c b/libio/wstrops.c > index 8e44f86c35..2aec314937 100644 > --- a/libio/wstrops.c > +++ b/libio/wstrops.c > @@ -130,7 +130,10 @@ _IO_wstr_overflow (FILE *fp, wint_t c) > *fp->_wide_data->_IO_write_ptr++ = c; > if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_read_end) > fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_write_ptr; > - return c; > + if (flush_only) > + return 0; > + else > + return c; > } > >