fix null pointer crash in Win32 because esp register is broken
authorSergey Kolomenkin <kolomenkin@gmail.com>
Mon, 7 Dec 2015 20:54:57 +0000 (12:54 -0800)
committerJohann <johannkoenig@google.com>
Mon, 7 Dec 2015 20:57:06 +0000 (12:57 -0800)
https://bugs.chromium.org/p/webm/issues/detail?id=1105

Change-Id: I304ea85ea1f6474e26f074dc39dc0748b90d4d3d

vpx_dsp/x86/highbd_subpel_variance_impl_sse2.asm
vpx_dsp/x86/subpel_variance_sse2.asm

index 93df92a..5f9c963 100644 (file)
@@ -124,7 +124,6 @@ SECTION .text
 
       ; 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 @@ SECTION .text
       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 @@ SECTION .text
 
       ; 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 @@ SECTION .text
       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
index 05dcff7..1176a2f 100644 (file)
@@ -140,7 +140,6 @@ SECTION .text
 
       ;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 @@ SECTION .text
       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 @@ SECTION .text
 
       ;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 @@ SECTION .text
       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