From patchwork Thu Jun 11 17:42:05 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Bernhard_Rosenkr=C3=A4nzer?= X-Patchwork-Id: 136872 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6AE754BA5439 for ; Thu, 11 Jun 2026 17:43:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6AE754BA5439 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=lindev.ch header.i=@lindev.ch header.a=rsa-sha256 header.s=default header.b=eFa6lxmh X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from pelicanus.tech (pelicanus.tech [173.212.228.248]) by sourceware.org (Postfix) with ESMTPS id 03C7E4BA2E0A for ; Thu, 11 Jun 2026 17:42:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 03C7E4BA2E0A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=lindev.ch Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=pelicanus.fish ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 03C7E4BA2E0A Authentication-Results: sourceware.org; arc=none smtp.remote-ip=173.212.228.248 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781199740; cv=none; b=w7G+fyy8zkP8o8LQVHOTsn4XaqVZtp2BNabYWW59PZVQKa5KbqWLjgJ5gF+n5OuB81CV6IrcbinUTeuYi4JFo3gYHPNwybmfVDcldYfa/hqB3peOlz+0GIUQD3AxgMgmg3/tkV/M5dyD0JEQd/l7dbVK/lKcQ7afx3gYvd4EIIs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781199740; c=relaxed/simple; bh=JwjJU/E4/1mrPjZEV9s1MqqWvYqjP0WnK5MamplNGEw=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=r5GdLhB0ABnm/ifc5lw5Y8RvdIgrOuVXSDqFX7Ju+R4M+Lttm8BrPZbVlDcDh8olGR/01iyhRYteecUkNJF3yIwR2seOKBiWDb5PJDVXu89aiPqvLNq7G0z8dIlpAAahbCjq3HD17LNi06Qujy600DnLbgvuxrPnJgP9VsJZ6pA= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=lindev.ch header.i=@lindev.ch header.a=rsa-sha256 header.s=default header.b=eFa6lxmh DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 03C7E4BA2E0A Received: from emag.lindev.ch (unknown [81.221.122.240]) by pelicanus.tech (Postfix) with ESMTPSA id 6106A32472 for ; Thu, 11 Jun 2026 18:42:15 +0100 (BST) Received: from ryzen9.tail6abcb.ts.net (unknown [81.221.122.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519MLKEM768 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) (Authenticated sender: bero@lindev.ch) by emag.lindev.ch (Postfix) with ESMTPSA id 93A2E2006C1; Thu, 11 Jun 2026 19:41:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lindev.ch; s=default; t=1781199734; bh=JwjJU/E4/1mrPjZEV9s1MqqWvYqjP0WnK5MamplNGEw=; h=From:To:Cc:Subject:Date; b=eFa6lxmhQSjoyP/cy/qMqbLSSRiZjBG5Kkz2HjE0G6xwRGZhIIXz6+gKqX+Cye9YJ IsNxlt1VlPfoiyiHON4L/cQt2Wj1NNw1JlL2EVlRHyuBWRbAXz9St6+BqoP3p1+eDz ZscsHIYycIrnjcFNnGZjRlS9dlH9TcBnPOb3CNCo= From: =?utf-8?q?Bernhard_Rosenkr=C3=A4nzer?= To: libc-alpha@sourceware.org Cc: =?utf-8?q?Bernhard_Rosenkr=C3=A4nzer?= Subject: [PATCH] Use memchr in _IO_new_file_xsputn Date: Thu, 11 Jun 2026 19:42:05 +0200 Message-ID: <20260611174205.3283678-1-bero@lindev.ch> X-Mailer: git-send-email 2.53.0 MIME-Version: 1.0 X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, SPF_HELO_PASS, SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Use memchr instead of implementing a bytewise lookup, this should be slightly faster and more readable Signed-off-by: Bernhard Rosenkränzer --- libio/fileops.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/libio/fileops.c b/libio/fileops.c index 9348d7c3a1..a614e7c528 100644 --- a/libio/fileops.c +++ b/libio/fileops.c @@ -1290,15 +1290,11 @@ _IO_new_file_xsputn (FILE *f, const void *data, size_t n) count = f->_IO_buf_end - f->_IO_write_ptr; if (count >= n) { - const char *p; - for (p = s + n; p > s; ) + const char *p = memrchr (s, '\n', n); + if (p != NULL) { - if (*--p == '\n') - { - count = p - s + 1; - must_flush = 1; - break; - } + count = p - s + 1; + must_flush = 1; } } }