]> code.delx.au - gnu-emacs/blobdiff - src/coding.c
Merge from origin/emacs-25
[gnu-emacs] / src / coding.c
index 85b97ce61745e1f8a49ba762d33733662f3f1762..f5fe52e04c072736c5ec5c3f1516603cc614726d 100644 (file)
@@ -1,5 +1,5 @@
 /* Coding system handler (conversion, detection, etc).
-   Copyright (C) 2001-2015 Free Software Foundation, Inc.
+   Copyright (C) 2001-2016 Free Software Foundation, Inc.
    Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
      2005, 2006, 2007, 2008, 2009, 2010, 2011
      National Institute of Advanced Industrial Science and Technology (AIST)
@@ -6814,39 +6814,29 @@ decode_eol (struct coding_system *coding)
   else if (EQ (eol_type, Qdos))
     {
       ptrdiff_t n = 0;
+      ptrdiff_t pos = coding->dst_pos;
+      ptrdiff_t pos_byte = coding->dst_pos_byte;
+      ptrdiff_t pos_end = pos_byte + coding->produced - 1;
 
-      if (NILP (coding->dst_object))
-       {
-         /* Start deleting '\r' from the tail to minimize the memory
-            movement.  */
-         for (p = pend - 2; p >= pbeg; p--)
-           if (*p == '\r')
-             {
-               memmove (p, p + 1, pend-- - p - 1);
-               n++;
-             }
-       }
-      else
-       {
-         ptrdiff_t pos_byte = coding->dst_pos_byte;
-         ptrdiff_t pos = coding->dst_pos;
-         ptrdiff_t pos_end = pos + coding->produced_char - 1;
+      /* This assertion is here instead of code, now deleted, that
+        handled the NILP case, which no longer happens with the
+        current codebase.  */
+      eassert (!NILP (coding->dst_object));
 
-         while (pos < pos_end)
+      while (pos_byte < pos_end)
+       {
+         p = BYTE_POS_ADDR (pos_byte);
+         if (*p == '\r' && p[1] == '\n')
            {
-             p = BYTE_POS_ADDR (pos_byte);
-             if (*p == '\r' && p[1] == '\n')
-               {
-                 del_range_2 (pos, pos_byte, pos + 1, pos_byte + 1, 0);
-                 n++;
-                 pos_end--;
-               }
-             pos++;
-             if (coding->dst_multibyte)
-               pos_byte += BYTES_BY_CHAR_HEAD (*p);
-             else
-               pos_byte++;
+             del_range_2 (pos, pos_byte, pos + 1, pos_byte + 1, 0);
+             n++;
+             pos_end--;
            }
+         pos++;
+         if (coding->dst_multibyte)
+           pos_byte += BYTES_BY_CHAR_HEAD (*p);
+         else
+           pos_byte++;
        }
       coding->produced -= n;
       coding->produced_char -= n;