diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index 4cf0f0c75f..e404d60ca4 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -2070,7 +2070,7 @@ static int handle_notify(URLContext *s, RTMPPacket *pkt) { GetByteContext gbc; PutByteContext pbc; uint32_t ts; - int old_flv_size; + int old_flv_size, err; const uint8_t *datatowrite; unsigned datatowritelength; @@ -2098,22 +2098,23 @@ static int handle_notify(URLContext *s, RTMPPacket *pkt) { old_flv_size = rt->flv_size; rt->flv_size += datatowritelength + 15; } else { - int err; old_flv_size = 0; rt->flv_size = datatowritelength + 15; rt->flv_off = 0; - if ((err = av_reallocp(&rt->flv_data, rt->flv_size)) < 0) - return err; - bytestream2_init_writer(&pbc, rt->flv_data, rt->flv_size); - bytestream2_skip_p(&pbc, old_flv_size); - bytestream2_put_byte(&pbc, pkt->type); - bytestream2_put_be24(&pbc, datatowritelength); - bytestream2_put_be24(&pbc, ts); - bytestream2_put_byte(&pbc, ts >> 24); - bytestream2_put_be24(&pbc, 0); - bytestream2_put_buffer(&pbc, datatowrite, datatowritelength); - bytestream2_put_be32(&pbc, 0); } + + if ((err = av_reallocp(&rt->flv_data, rt->flv_size)) < 0) + return err; + bytestream2_init_writer(&pbc, rt->flv_data, rt->flv_size); + bytestream2_skip_p(&pbc, old_flv_size); + bytestream2_put_byte(&pbc, pkt->type); + bytestream2_put_be24(&pbc, datatowritelength); + bytestream2_put_be24(&pbc, ts); + bytestream2_put_byte(&pbc, ts >> 24); + bytestream2_put_be24(&pbc, 0); + bytestream2_put_buffer(&pbc, datatowrite, datatowritelength); + bytestream2_put_be32(&pbc, 0); + return 0; }