diff --git a/lib/state.c b/lib/state.c
index f4c6240387af9ceb4cabdaaea8f9d70911abd2ac..12be4f61b2f1d82930529f247ccc4da0f996052f 100644
--- a/lib/state.c
+++ b/lib/state.c
@@ -1053,7 +1053,7 @@ void oc_loop_filter_init_c(signed char _bv[256],int _flimit){
   _fragy0:    The Y coordinate of the first fragment row to filter.
   _fragy_end: The Y coordinate of the fragment row to stop filtering at.*/
 void oc_state_loop_filter_frag_rows_c(const oc_theora_state *_state,
- signed char *_bv,int _refi,int _pli,int _fragy0,int _fragy_end){
+ signed char _bvarray[256],int _refi,int _pli,int _fragy0,int _fragy_end){
   const oc_fragment_plane *fplane;
   const oc_fragment       *frags;
   const ptrdiff_t         *frag_buf_offs;
@@ -1064,7 +1064,7 @@ void oc_state_loop_filter_frag_rows_c(const oc_theora_state *_state,
   ptrdiff_t                fragi0_end;
   int                      ystride;
   int                      nhfrags;
-  _bv+=127;
+  signed char             *_bv = &_bvarray[127];
   fplane=_state->fplanes+_pli;
   nhfrags=fplane->nhfrags;
   fragi_top=fplane->froffset;
diff --git a/lib/state.h b/lib/state.h
index f176a53ce9842721a35d1db796db9e4de04bfb42..5d5d0c108e8340d5e4b331d5f526f20ea5dc9629 100644
--- a/lib/state.h
+++ b/lib/state.h
@@ -523,7 +523,7 @@ void oc_idct8x8_c(ogg_int16_t _y[64],ogg_int16_t _x[64],int _last_zzi);
 void oc_state_frag_recon_c(const oc_theora_state *_state,ptrdiff_t _fragi,
  int _pli,ogg_int16_t _dct_coeffs[128],int _last_zzi,ogg_uint16_t _dc_quant);
 void oc_state_loop_filter_frag_rows_c(const oc_theora_state *_state,
- signed char _bv[256],int _refi,int _pli,int _fragy0,int _fragy_end);
+ signed char _bvarray[256],int _refi,int _pli,int _fragy0,int _fragy_end);
 void oc_restore_fpu_c(void);
 
 /*We need a way to call a few encoder functions without introducing a link-time