]> git.eshelyaron.com Git - emacs.git/commitdiff
Restore check for Emacs 20.2 bytecodes
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 23 May 2020 17:38:53 +0000 (10:38 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 23 May 2020 17:39:45 +0000 (10:39 -0700)
* src/eval.c (Ffetch_bytecode): Check for multibyte bytecodes
here too.  Problem reported by Stefan Monnier in:
https://lists.gnu.org/r/emacs-devel/2020-05/msg02876.html

src/eval.c

index be2af2d041bbe9870f6b4fecb4472f736d1bca8f..959adea6467acab94d7377629b71bca23f5cb8b3 100644 (file)
@@ -3202,7 +3202,19 @@ DEFUN ("fetch-bytecode", Ffetch_bytecode, Sfetch_bytecode,
              else
                error ("Invalid byte code");
            }
-         ASET (object, COMPILED_BYTECODE, XCAR (tem));
+
+         Lisp_Object bytecode = XCAR (tem);
+         if (STRING_MULTIBYTE (bytecode))
+           {
+             /* BYTECODE must have been produced by Emacs 20.2 or earlier
+                because it produced a raw 8-bit string for byte-code and now
+                such a byte-code string is loaded as multibyte with raw 8-bit
+                characters converted to multibyte form.  Convert them back to
+                the original unibyte form.  */
+             bytecode = Fstring_as_unibyte (bytecode);
+           }
+
+         ASET (object, COMPILED_BYTECODE, bytecode);
          ASET (object, COMPILED_CONSTANTS, XCDR (tem));
        }
     }