From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 5846 invoked from network); 12 Mar 2021 02:51:48 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 12 Mar 2021 02:51:48 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1615517508; b=MkHN6otFvOFIPNPrGrdv8163GKni7t3qPjX5LB6LAZdnuJet6kYq8AXjY43c8E6y3Y9pFEz9K2 hnMcisAu/RUowgxyp36VFTmKb7NTs5YdZp/ZeytxGn6i6mmZrDBb40ZxAc2cbkuHCTEoD3n8lQ Kpx5Y+jOP9aaL4d166Gfkvt6MtzPGowDnbdY+NPnh29/U+wCxtNAziS4XLxYG9xlEoCptT+1Nu uZdlrE5cR0HYmVZjR+EZodVBBcNMM2mXtc58w4uQXwZUHR53VadyIqM9KgI77FvV4ctz1VAqUG z3l1lMw1gxGw1VAkoX3U0+ZQq7D13hcWAQpZcin1JqRSsQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lf1-f50.google.com) smtp.remote-ip=209.85.167.50; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1615517508; bh=qXLe/MO3VejcjYTVbWSUdxpANxBtnqluHyaBPZYT5fM=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Message-ID:Date:Subject:To:From:DKIM-Signature: DKIM-Signature; b=YH1h5BESuYCk/9kcsXYzY8fgZGNMBnR1OMca2EmXnWjD4ju9RQCXwL0d59cxTpNHHKigWl87eK WaUwYchxoWUn+Q2cbMbeoOR0d9AD0RkQrumpN/jnS/hc/UXqpCqyld7zJbxmkWvRD2ImNUYvbW 9AWCR4nNwFLeP1Ze6+tdM4TOoHE5CahpbuaG83NJrbM08NKW0c5xLo7h4kgas3MqJtPbCgsT0b qMt78hzT1jJByZcXNQavsjy3gVK7FfBDefLDQojyzLqCp/S7/gwcQwuL16u5BGA4LzY0p8RK/c HFc/fNi7mJ4cXuG1vgD9+L2v4kdwMpUkv9FtKYrUpFACjw==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Message-Id:Date:Subject:To:From: Reply-To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=LB2ybP+fz9Yn0JOd2xHw1isIXECJZvXoToeYAoUslSU=; b=qBddGjjUp5hXy1IBlPwT6qlumu wGjkUDJNSjZ5ekSRp+7+K6uZEmcLg7y7vfGyMzUptUA1PpvX34Me8QbjSXee7Zz6yfGlyrcp+0I2y S22cnXve2uWjyymFrI/sU1lruFn9dYO8QxXGUcEyn2TjLpOWtlQqTUU9K4OiBf/fYVGaGIAwyK0KR tynGcRm0IMqsYXI5cZWHvr9qGhXLejFHy6BZJQrNfEiXwS7Ndg5TUu1OQErRa65FQVG8DoR1MU8WJ fxTI5avQR4DT/4HM1phsMITdGIFMMs5y0jZk+3L4XIm3dXPAKlY1G3fY1h+v+HVERLlHM7X228G0z MW/z6bOA==; Received: from authenticated user by zero.zsh.org with local id 1lKXtw-00080n-ME; Fri, 12 Mar 2021 02:51:44 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lf1-f50.google.com) smtp.remote-ip=209.85.167.50; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-lf1-f50.google.com ([209.85.167.50]:38052) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1lKXti-0007rl-F0; Fri, 12 Mar 2021 02:51:30 +0000 Received: by mail-lf1-f50.google.com with SMTP id m22so43274003lfg.5 for ; Thu, 11 Mar 2021 18:51:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=LB2ybP+fz9Yn0JOd2xHw1isIXECJZvXoToeYAoUslSU=; b=hLaMTzEPIvfoz6v2nosclMWu5mEpJgZdGaN+MVY6vD0OoQGdMKGq3aD7B8WZmnRtom hOVnGuotm+P2QBoeueZNaRVj1DcIqk/xz9Uo7JQ0uLwdSo4PLTdhQj0BguIGCO3bX1oY 4/+cwky85fABDytTn/gjF3SceDPG2xRaY9I5mQKlKS7HAGG+eoOxfH6QepYAuLeN3Z8f J/qtFRTspzUbomNE3hRaey+xFcACehbe4CeO8lHGOEm4fmeJXDcD8rIgH7XN6mZbqlTw oibPlB5RkSUwnZqZjRdYYMjE61PCt+nvGrYaYjG0QgJ7da8enINMlrB9h86Fy52RzDkp CxGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=LB2ybP+fz9Yn0JOd2xHw1isIXECJZvXoToeYAoUslSU=; b=TeaoMNyHywdVX+Ow04ejcOXj8FSxtMlsqr8z7UXQCCEehpSex8JA1oYzRC4ajvybqr CHkotxbPk0XG91PmPc7cFtFhq0+cTAX/Dho4pd0hJR2REa0XX4LF37j/1x6ecIe1jGN9 DUWxJv6g+fs9P06VqurDOnZ9UmJdL7a2oWeqtXs2xg/XVWjZbegJqU9gSGNNQ1Bdcy7l NWn9UEgETz2TCPASfXwg2BDl7etRQtunDYLwNMWacJVStqi3C6HFcNIFCIobCrCut4zM 2NQH+v8Y6yExOu1kxQPIdscjjxyVv7Ed15qaLTLlJlK2/pQP4HRaKCTg9TK2b2At4V7o 1YiQ== X-Gm-Message-State: AOAM532GVOqeeaLfrBoY1ORJJHp8qyApuAxFHAK9GU5hNeJv6DcnpK/O yedrF59Wud+GzNlbt7TazjrWMwJpLG0= X-Google-Smtp-Source: ABdhPJxyxGbb8uWr2QflTRPSl9Cb1dkZfIFmTOrzPVFxCFMvNMsRa/4oX2yEtS9LYPcwAyczSHK/tg== X-Received: by 2002:a19:7716:: with SMTP id s22mr3994683lfc.542.1615517489539; Thu, 11 Mar 2021 18:51:29 -0800 (PST) Received: from localhost.localdomain (h-88-110.A230.priv.bahnhof.se. [212.85.88.110]) by smtp.gmail.com with ESMTPSA id q25sm1405715lfn.42.2021.03.11.18.51.28 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Mar 2021 18:51:28 -0800 (PST) From: Mikael Magnusson To: zsh-workers@zsh.org Subject: PATCH: Fix handling of NUL bytes in zexpandtabs multibyte version Date: Fri, 12 Mar 2021 03:51:22 +0100 Message-Id: <20210312025122.23804-1-mikachu@gmail.com> X-Mailer: git-send-email 2.15.1 X-Seq: 48168 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: Problem found by dg1727 on #zsh. --- I checked other uses of zexpandtabs in the same file only and they all seem to handle the 0 return correctly, and some of them even comment on it, so fairly confident this is the right fix. --- Src/utils.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Src/utils.c b/Src/utils.c index 8fcea5362a..f8cbe65ba5 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -5936,8 +5936,11 @@ zexpandtabs(const char *s, int len, int width, int startpos, FILE *fout, memset(&mbs, 0, sizeof(mbs)); s++; len--; - } else if (ret == MB_INCOMPLETE) { + } else if (ret == MB_INCOMPLETE || /* incomplete at end --- assume likewise, best we've got */ + ret == 0) { + /* NUL character returns 0, which would loop infinitely, so advance + * one byte in this case too */ s++; len--; } else { -- 2.15.1