
Author: ods15 Date: Sat Nov 18 16:11:23 2006 New Revision: 240 Modified: trunk/libnut/demuxer.c Log: some fixes, report if index was read, don't read it again, and don't infinite loop when reaching EOF... Modified: trunk/libnut/demuxer.c ============================================================================== --- trunk/libnut/demuxer.c (original) +++ trunk/libnut/demuxer.c Sat Nov 18 16:11:23 2006 @@ -750,7 +750,7 @@ } // failure - if (len == -1 && (nut->before_seek += read_data) < 512*1024) { + if (len == -1 && (nut->before_seek += read_data) < 512*1024 && read_data > 0) { nut->i->buf_ptr -= 7; // rewind 7 bytes, try again flush_buf(nut->i); return find_main_headers(nut); @@ -889,8 +889,9 @@ memset(&nut->info[nut->info_count - 1], 0, sizeof(nut_info_packet_t)); CHECK(get_info_header(nut, &nut->info[nut->info_count - 1])); nut->info[nut->info_count].count = -1; - } else if (tmp == INDEX_STARTCODE && nut->dopts.read_index) { + } else if (tmp == INDEX_STARTCODE && nut->dopts.read_index&1) { CHECK(get_index(nut)); // usually you don't care about get_index() errors, but nothing except a memory error can happen here + nut->dopts.read_index = 2; } else { CHECK(get_header(nut->i, NULL)); }
participants (1)
-
ods15