X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=ext%2Fvcedit.c;h=75bf80db99aac4b3205172cb5c14b520b4d9193a;hb=2a86264bbe06e4e24e86170ece78e0ed8bf24e32;hp=795b0c3e1011510a60f18aa2eed53ef694c1b3db;hpb=86dd1798f5578ac5bad40c2911b6087a377bf4bc;p=ruby-vorbistagger.git diff --git a/ext/vcedit.c b/ext/vcedit.c index 795b0c3..75bf80d 100644 --- a/ext/vcedit.c +++ b/ext/vcedit.c @@ -240,7 +240,7 @@ _fetch_next_packet (vcedit_state *s, ogg_packet *p, ogg_page *page) bytes = fread (buffer, 1, CHUNKSIZE, s->in); ogg_sync_wrote (&s->oy, bytes); - if (!bytes) + if (!bytes && feof (s->in)) return 0; } @@ -355,7 +355,7 @@ vcedit_open (vcedit_state *state) buffer = ogg_sync_buffer (&state->oy, CHUNKSIZE); bytes = fread (buffer, 1, CHUNKSIZE, state->in); - if (!bytes && i < 2) { + if (!bytes && feof (state->in) && i < 2) { ret = VCEDIT_ERR_INVAL; goto err; } @@ -512,7 +512,7 @@ vcedit_write (vcedit_state *state) /* clear it, because not all paths to here do */ state->eosin = 0; - while (!state->eosin) { /* We reached eos, not eof */ + do { /* We copy the rest of the stream (other logical streams) * through, a page at a time. */ @@ -536,9 +536,8 @@ vcedit_write (vcedit_state *state) bytes = fread (buffer, 1, CHUNKSIZE, state->in); ogg_sync_wrote (&state->oy, bytes); - if (!bytes) - state->eosin = 1; - } + state->eosin = !bytes && feof (state->in); + } while (!state->eosin); fclose (out); fclose (state->in);