Commits

Anonymous committed 201ae2d Merge

Issue #17237: Fix crash in the ASCII decoder on m68k.

  • Participants
  • Parent commits 4b32389, 0f8022a

Comments (0)

Files changed (2)

 Core and Builtins
 -----------------
 
+- Issue #17237: Fix crash in the ASCII decoder on m68k.
+
 - Issue #17927: Frame objects kept arguments alive if they had been
   copied into a cell, even if the cell was cleared.
 

Objects/unicodeobject.c

     const char *p = start;
     const char *aligned_end = (const char *) _Py_ALIGN_DOWN(end, SIZEOF_LONG);
 
+    /*
+     * Issue #17237: m68k is a bit different from most architectures in
+     * that objects do not use "natural alignment" - for example, int and
+     * long are only aligned at 2-byte boundaries.  Therefore the assert()
+     * won't work; also, tests have shown that skipping the "optimised
+     * version" will even speed up m68k.
+     */
+#if !defined(__m68k__)
 #if SIZEOF_LONG <= SIZEOF_VOID_P
     assert(_Py_IS_ALIGNED(dest, SIZEOF_LONG));
     if (_Py_IS_ALIGNED(p, SIZEOF_LONG)) {
         return p - start;
     }
 #endif
+#endif
     while (p < end) {
         /* Fast path, see in STRINGLIB(utf8_decode) in stringlib/codecs.h
            for an explanation. */