正在显示
2 个修改的文件
包含
8 行增加
和
6 行删除
| @@ -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 | + | ||
| 150 | + // the bytes already in buffer | ||
| 151 | + int nb_exists_bytes = (int)(end - p); | ||
| 152 | + srs_assert(nb_exists_bytes >= 0); | ||
| 153 | + | ||
| 149 | // resize the space when no left space. | 154 | // resize the space when no left space. |
| 150 | - if (nb_free_space < required_size) { | ||
| 151 | - // the bytes already in buffer | ||
| 152 | - int nb_exists_bytes = (int)(end - p); | ||
| 153 | - srs_assert(nb_exists_bytes >= 0); | 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); |
-
请 注册 或 登录 后发表评论