shithub: libvpx

Download patch

ref: 5fc9688792735888731acaf5e2628cd1b3a76d1b
parent: 14ea8848fbcd8727085d648bc2c192c173eaac8a
author: Sergey Kolomenkin <kolomenkin@gmail.com>
date: Mon Dec 7 07:54:57 EST 2015

fix null pointer crash in Win32 because esp register is broken

https://bugs.chromium.org/p/webm/issues/detail?id=1105

Change-Id: I304ea85ea1f6474e26f074dc39dc0748b90d4d3d

--- a/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm
+++ b/vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm
@@ -124,7 +124,6 @@
 
       ; Store bilin_filter and pw_8 location in stack
       GET_GOT eax
-      add esp, 4                ; restore esp
 
       lea ecx, [GLOBAL(bilin_filter_m)]
       mov g_bilin_filterm, ecx
@@ -132,6 +131,7 @@
       lea ecx, [GLOBAL(pw_8)]
       mov g_pw_8m, ecx
 
+      RESTORE_GOT               ; restore esp
       LOAD_IF_USED 0, 1         ; load eax, ecx back
     %else
       cglobal highbd_sub_pixel_variance%1xh, 7, 7, 13, src, src_stride, \
@@ -141,7 +141,6 @@
 
       ; Store bilin_filter and pw_8 location in stack
       GET_GOT eax
-      add esp, 4                ; restore esp
 
       lea ecx, [GLOBAL(bilin_filter_m)]
       mov g_bilin_filterm, ecx
@@ -149,6 +148,7 @@
       lea ecx, [GLOBAL(pw_8)]
       mov g_pw_8m, ecx
 
+      RESTORE_GOT               ; restore esp
       LOAD_IF_USED 0, 1         ; load eax, ecx back
     %endif
   %else
--- a/vpx_dsp/x86/subpel_variance_sse2.asm
+++ b/vpx_dsp/x86/subpel_variance_sse2.asm
@@ -140,7 +140,6 @@
 
       ;Store bilin_filter and pw_8 location in stack
       GET_GOT eax
-      add esp, 4                ; restore esp
 
       lea ecx, [GLOBAL(bilin_filter_m)]
       mov g_bilin_filterm, ecx
@@ -148,6 +147,7 @@
       lea ecx, [GLOBAL(pw_8)]
       mov g_pw_8m, ecx
 
+      RESTORE_GOT               ; restore esp
       LOAD_IF_USED 0, 1         ; load eax, ecx back
     %else
       cglobal sub_pixel_variance%1xh, 7, 7, 13, src, src_stride, x_offset, \
@@ -157,7 +157,6 @@
 
       ;Store bilin_filter and pw_8 location in stack
       GET_GOT eax
-      add esp, 4                ; restore esp
 
       lea ecx, [GLOBAL(bilin_filter_m)]
       mov g_bilin_filterm, ecx
@@ -165,6 +164,7 @@
       lea ecx, [GLOBAL(pw_8)]
       mov g_pw_8m, ecx
 
+      RESTORE_GOT               ; restore esp
       LOAD_IF_USED 0, 1         ; load eax, ecx back
     %endif
   %else