Ticket #7039: indeo3_force_align.patch

File indeo3_force_align.patch, 1.1 KB (added by joostp, 6 years ago)
  • image/codecs/indeo3.cpp

    diff --git a/image/codecs/indeo3.cpp b/image/codecs/indeo3.cpp
    index af9120c..b8df86b 100644
    a b void Indeo3Decoder::decodeChunk(byte *cur, byte *ref, int width, int height,  
    377377                const byte *buf1, uint32 fflags2, const byte *hdr,
    378378                const byte *buf2, int min_width_160) {
    379379
     380        struct EnableX86Alignment {
     381                EnableX86Alignment() {
     382#if defined(__GNUC__)
     383        #if defined(__i386__)
     384                        /* Enable Alignment Checking on x86 */
     385                    __asm__("pushf\norl $0x40000,(%esp)\npopf");
     386        #elif defined(__x86_64__)
     387                        /* Enable Alignment Checking on x86_64 */
     388                        __asm__("pushf\norl $0x40000,(%rsp)\npopf");
     389        #endif
     390#endif
     391                }
     392
     393                ~EnableX86Alignment() {
     394#if defined(__GNUC__)
     395        #if defined(__i386__)
     396                        /* Disable Alignment Checking on x86 */
     397                        __asm__("pushf\nandl $0xfffbffff,(%esp)\npopf");
     398        #elif defined(__x86_64__)
     399                        /* Disable Alignment Checking on x86_64 */
     400                        __asm__("pushf\nandl $0xfffffffffffbffff,(%rsp)\npopf");
     401        #endif
     402#endif
     403                }
     404        } align;
     405
     406
    380407        byte bit_buf;
    381408        uint32 bit_pos, lv, lv1, lv2;
    382409        int32 *width_tbl, width_tbl_arr[10];