all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Allen Li <vianchielfaura@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: Andreas Schwab <schwab@suse.de>, 29189@debbugs.gnu.org
Subject: bug#29189: 25.3; Dired does not work with binary filenames
Date: Fri, 1 Dec 2017 21:21:14 -0800	[thread overview]
Message-ID: <CAJr1M6c+0=-77pK2sMgG00MUTUzA1tfMGiNo8XU1apEC1AMd3g@mail.gmail.com> (raw)
In-Reply-To: <831skserz8.fsf@gnu.org>

On Mon, Nov 20, 2017 at 10:15 AM, Eli Zaretskii <eliz@gnu.org> wrote:
> Right you are, thanks.  Updated patch below.
>
> diff --git a/src/coding.c b/src/coding.c
> index d790ad0..ac55f87 100644
> --- a/src/coding.c
> +++ b/src/coding.c
> @@ -7423,10 +7423,23 @@ decode_coding (struct coding_system *coding)
>
>           while (nbytes-- > 0)
>             {
> -             int c = *src++;
> +             int c;
>
> -             if (c & 0x80)
> -               c = BYTE8_TO_CHAR (c);
> +             /* Copy raw bytes in their 2-byte forms from multibyte
> +                text as single characters.  */
> +             if (coding->src_multibyte
> +                 && CHAR_BYTE8_HEAD_P (*src) && nbytes > 0)
> +               {
> +                 c = STRING_CHAR_ADVANCE (src);
> +                 nbytes--;
> +               }
> +             else
> +               {
> +                 c = *src++;
> +
> +                 if (c & 0x80)
> +                   c = BYTE8_TO_CHAR (c);
> +               }
>               coding->charbuf[coding->charbuf_used++] = c;
>             }
>           produce_chars (coding, Qnil, 1);

I applied this patch to master (0b6f4f2c60) and it fixes the bug and
doesn't crash Emacs immediately.  The code also looks right, but I am
not familiar with Emacs's C code.  A few questions.

Why do we have to handle multibyte strings in this function
decode_coding?  (I found the answer in the docs)

Can you briefly explain how Emacs internally stores unibyte and
multibyte strings?  (I found the answer in character.h)

After doing the above research, I can more confidently say this is
right, but having an expert opinion would be nice.





  parent reply	other threads:[~2017-12-02  5:21 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-07  9:03 bug#29189: 25.3; Dired does not work with binary filenames Allen Li
2017-11-07 10:00 ` Andreas Schwab
2017-11-07 17:08   ` Eli Zaretskii
2017-11-08  5:12     ` Allen Li
2017-11-08  6:22   ` Allen Li
2017-11-08  8:44     ` Eli Zaretskii
2017-11-11  6:59       ` Allen Li
2017-11-11  8:20         ` Eli Zaretskii
2017-11-11 14:18           ` Eli Zaretskii
2017-11-11 15:21             ` Eli Zaretskii
2017-11-16  6:31               ` Allen Li
2017-11-16 16:00                 ` Eli Zaretskii
2017-11-18 14:42                   ` Eli Zaretskii
2017-11-20  9:48                     ` Andreas Schwab
2017-11-20 18:15                       ` Eli Zaretskii
2017-11-24  8:52                         ` Eli Zaretskii
2017-12-01  8:41                           ` Eli Zaretskii
2017-12-09  9:03                             ` Eli Zaretskii
2017-12-15  9:09                               ` Eli Zaretskii
2017-12-02  5:21                         ` Allen Li [this message]
2017-12-02  9:01                           ` Eli Zaretskii
2018-01-05 22:16                     ` Stefan Monnier
     [not found]                       ` <83h8rz9x6k.fsf@gnu.org>
     [not found]                         ` <jwvbmi72fak.fsf-monnier+emacs@gnu.org>
2018-01-06 16:04                           ` Eli Zaretskii
2018-01-07 15:20                             ` Stefan Monnier
2018-01-07 17:53                               ` Eli Zaretskii
     [not found] <CADbSrJytKAysg4DRNR4iJD5JJbn7iwi_28Gh_oabaE-rnVyqLw@mail.gmail.com>
2018-09-09  0:31 ` Allen Li
2018-09-09  6:12   ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAJr1M6c+0=-77pK2sMgG00MUTUzA1tfMGiNo8XU1apEC1AMd3g@mail.gmail.com' \
    --to=vianchielfaura@gmail.com \
    --cc=29189@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=schwab@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.