正在显示
2 个修改的文件
包含
6 行增加
和
4 行删除
| @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 31 | // current release version | 31 | // current release version |
| 32 | #define VERSION_MAJOR 3 | 32 | #define VERSION_MAJOR 3 |
| 33 | #define VERSION_MINOR 0 | 33 | #define VERSION_MINOR 0 |
| 34 | -#define VERSION_REVISION 215 | 34 | +#define VERSION_REVISION 216 |
| 35 | 35 | ||
| 36 | // generated by configure, only macros. | 36 | // generated by configure, only macros. |
| 37 | #include <srs_auto_headers.hpp> | 37 | #include <srs_auto_headers.hpp> |
| @@ -146,11 +146,13 @@ int SrsFastStream::grow(ISrsBufferReader* reader, int required_size) | @@ -146,11 +146,13 @@ int SrsFastStream::grow(ISrsBufferReader* reader, int required_size) | ||
| 146 | // the free space of buffer, | 146 | // the free space of buffer, |
| 147 | // buffer = consumed_bytes + exists_bytes + free_space. | 147 | // buffer = consumed_bytes + exists_bytes + free_space. |
| 148 | int nb_free_space = (int)(buffer + nb_buffer - end); | 148 | int nb_free_space = (int)(buffer + nb_buffer - end); |
| 149 | - // resize the space when no left space. | ||
| 150 | - if (nb_free_space < required_size) { | 149 | + |
| 151 | // the bytes already in buffer | 150 | // the bytes already in buffer |
| 152 | int nb_exists_bytes = (int)(end - p); | 151 | int nb_exists_bytes = (int)(end - p); |
| 153 | srs_assert(nb_exists_bytes >= 0); | 152 | srs_assert(nb_exists_bytes >= 0); |
| 153 | + | ||
| 154 | + // resize the space when no left space. | ||
| 155 | + if (nb_free_space < required_size - nb_exists_bytes) { | ||
| 154 | srs_verbose("move fast buffer %d bytes", nb_exists_bytes); | 156 | srs_verbose("move fast buffer %d bytes", nb_exists_bytes); |
| 155 | 157 | ||
| 156 | // reset or move to get more space. | 158 | // reset or move to get more space. |
| @@ -168,7 +170,7 @@ int SrsFastStream::grow(ISrsBufferReader* reader, int required_size) | @@ -168,7 +170,7 @@ int SrsFastStream::grow(ISrsBufferReader* reader, int required_size) | ||
| 168 | 170 | ||
| 169 | // check whether enough free space in buffer. | 171 | // check whether enough free space in buffer. |
| 170 | nb_free_space = (int)(buffer + nb_buffer - end); | 172 | nb_free_space = (int)(buffer + nb_buffer - end); |
| 171 | - if (nb_free_space < required_size) { | 173 | + if (nb_free_space < required_size - nb_exists_bytes) { |
| 172 | ret = ERROR_READER_BUFFER_OVERFLOW; | 174 | ret = ERROR_READER_BUFFER_OVERFLOW; |
| 173 | srs_error("buffer overflow, required=%d, max=%d, left=%d, ret=%d", | 175 | srs_error("buffer overflow, required=%d, max=%d, left=%d, ret=%d", |
| 174 | required_size, nb_buffer, nb_free_space, ret); | 176 | required_size, nb_buffer, nb_free_space, ret); |
-
请 注册 或 登录 后发表评论