summaryrefslogtreecommitdiffstats
path: root/playtreeparser.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-01-01 09:35:25 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-01-01 09:35:25 +0000
commit27fcc9c6a6fa9c28b3bb888486fcafc94ffff88a (patch)
tree478e0cfbcfc89c4a879c08dcdae79535fcd2db89 /playtreeparser.c
parenta2c2268cdf6a2c5140084d61000144123f325ee3 (diff)
downloadmpv-27fcc9c6a6fa9c28b3bb888486fcafc94ffff88a.tar.bz2
mpv-27fcc9c6a6fa9c28b3bb888486fcafc94ffff88a.tar.xz
Add asserts to detect when assumptions for play_tree_parser_get_line
fail (mostly due to parsers using it incorrectly). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28217 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'playtreeparser.c')
-rw-r--r--playtreeparser.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/playtreeparser.c b/playtreeparser.c
index 0d4c0fe43d..a7e7395698 100644
--- a/playtreeparser.c
+++ b/playtreeparser.c
@@ -6,9 +6,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#ifdef MP_DEBUG
#include <assert.h>
-#endif
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -61,6 +59,8 @@ play_tree_parser_get_line(play_tree_parser_t* p) {
if(p->stream->eof && (p->buffer_end == 0 || p->iter[0] == '\0'))
return NULL;
+ assert(p->buffer_end < p->buffer_size);
+ assert(!p->buffer[p->buffer_end]);
while(1) {
if(resize) {
@@ -75,10 +75,12 @@ play_tree_parser_get_line(play_tree_parser_t* p) {
r = stream_read(p->stream,p->buffer + p->buffer_end,p->buffer_size - p->buffer_end - 1);
if(r > 0) {
p->buffer_end += r;
+ assert(p->buffer_end < p->buffer_size);
p->buffer[p->buffer_end] = '\0';
while(strlen(p->buffer + p->buffer_end - r) != r)
p->buffer[p->buffer_end - r + strlen(p->buffer + p->buffer_end - r)] = '\n';
}
+ assert(!p->buffer[p->buffer_end]);
}
end = strchr(p->iter,'\n');