From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Towards a cleaner build: bindat Date: Sat, 15 Jun 2019 17:22:30 +0300 Message-ID: <831rzvvsgp.fsf@gnu.org> References: <83a7eo9nsh.fsf@gnu.org> Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="32312"; mail-complaints-to="usenet@blaine.gmane.org" Cc: emacs-devel@gnu.org To: Lars Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jun 15 16:22:33 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hc9Zf-0008E7-LG for ged-emacs-devel@m.gmane.org; Sat, 15 Jun 2019 16:22:31 +0200 Original-Received: from localhost ([::1]:60806 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hc9Zd-0003g1-NM for ged-emacs-devel@m.gmane.org; Sat, 15 Jun 2019 10:22:29 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50308) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hc9ZY-0003fu-ES for emacs-devel@gnu.org; Sat, 15 Jun 2019 10:22:25 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:37420) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hc9ZY-0001br-Ay; Sat, 15 Jun 2019 10:22:24 -0400 Original-Received: from [176.228.60.248] (port=2156 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1hc9ZX-0002j6-Rh; Sat, 15 Jun 2019 10:22:24 -0400 In-reply-to: (message from Lars Ingebrigtsen on Sat, 15 Jun 2019 16:04:08 +0200) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:237686 Archived-At: > From: Lars Ingebrigtsen > Date: Sat, 15 Jun 2019 16:04:08 +0200 > > ((eq type 'str) > (let ((s (substring bindat-raw bindat-idx (+ bindat-idx len)))) > (setq bindat-idx (+ bindat-idx len)) > (if (stringp s) s > (string-make-unibyte (concat s))))) > ((eq type 'strz) > (let ((i 0) s) > (while (and (< i len) (/= (aref bindat-raw (+ bindat-idx i)) 0)) > (setq i (1+ i))) > (setq s (substring bindat-raw bindat-idx (+ bindat-idx i))) > (setq bindat-idx (+ bindat-idx len)) > (if (stringp s) s > (string-make-unibyte (concat s))))) > > s is either a string or a vector, and if it's a vector, we transform it > to a unibyte string by running it through concat and > string-make-unibyte. > > But as far as I can tell from poking at the code, the vector will always > be a vector of byte values; i.e., in the 0-255 region. concat, indeed, > returns a multibyte string: > > (multibyte-string-p (concat [250 255])) > => t > > So if we just avoid the concat and make a unibyte string from the vector > in, well, just about any other way, then the string-make-unibyte > should be unnecessary, right? Yes. You should create the string by calling unibyte-string.