From aa751573fef5a313fd485a74746ab664bd537581 Mon Sep 17 00:00:00 2001 From: Henrik Gramner Date: Fri, 5 Feb 2016 21:01:49 +0100 Subject: [PATCH] avcodec/h264: Fix segfault in 4:2:2 chroma deblock with 32-bit msvc Using rNm and x86inc's stack allocation with a negative value at the same time isn't supported, and caused the original stack pointer to be clobbered when using a compiler that doesn't support stack alignment. --- libavcodec/x86/h264_deblock.asm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/x86/h264_deblock.asm b/libavcodec/x86/h264_deblock.asm index 8f80863fc5..4aabbc0832 100644 --- a/libavcodec/x86/h264_deblock.asm +++ b/libavcodec/x86/h264_deblock.asm @@ -867,7 +867,8 @@ ff_chroma_inter_body_mmxext: %define t5 r4 %define t6 r5 -cglobal deblock_h_chroma422_8, 5, 6, 0, 0-(1+ARCH_X86_64*2)*mmsize +cglobal deblock_h_chroma422_8, 5, 6 + SUB rsp, (1+ARCH_X86_64*2)*mmsize %if ARCH_X86_64 %define buf0 [rsp+16] %define buf1 [rsp+8] @@ -907,6 +908,7 @@ cglobal deblock_h_chroma422_8, 5, 6, 0, 0-(1+ARCH_X86_64*2)*mmsize movq m0, buf0 movq m3, buf1 TRANSPOSE8x4B_STORE PASS8ROWS(t5, r0, r1, t6) + ADD rsp, (1+ARCH_X86_64*2)*mmsize RET ; in: %1=p0 %2=p1 %3=q1