diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index 80e8d084df92db7437595505c1c915f521f44e15..fe93546edd6dafb50f3b3c7d8304d2636369ca20 100644
--- a/libavformat/aviobuf.c
+++ b/libavformat/aviobuf.c
@@ -54,6 +54,10 @@ int init_put_byte(ByteIOContext *s,
     s->is_streamed = 0;
     s->max_packet_size = 0;
     s->update_checksum= NULL;
+    if(!read_packet && !write_flag){
+        s->pos = buffer_size;
+        s->buf_end = s->buffer + buffer_size;
+    }
     return 0;
 }
 
diff --git a/libavformat/mov.c b/libavformat/mov.c
index f02f8c89efc0bd44b7002458ffd06ae443805150..0f3720a01c68a49f145ea9e3600d882112eb241b 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1346,11 +1346,6 @@ static int mov_read_wide(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
 
 
 #ifdef CONFIG_ZLIB
-static int null_read_packet(void *opaque, uint8_t *buf, int buf_size)
-{
-    return buf_size;
-}
-
 static int mov_read_cmov(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
 {
     ByteIOContext ctx;
@@ -1383,7 +1378,7 @@ static int mov_read_cmov(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
     get_buffer(pb, cmov_data, cmov_len);
     if(uncompress (moov_data, (uLongf *) &moov_len, (const Bytef *)cmov_data, cmov_len) != Z_OK)
         return -1;
-    if(init_put_byte(&ctx, moov_data, moov_len, 0, NULL, null_read_packet, NULL, NULL) != 0)
+    if(init_put_byte(&ctx, moov_data, moov_len, 0, NULL, NULL, NULL, NULL) != 0)
         return -1;
     atom.type = MKTAG( 'm', 'o', 'o', 'v' );
     atom.offset = 0;