return ret;
c->pos = c->start;
if ((ret = slave_seek(h)) < 0) {
- ffurl_close(c->h);
+ ffurl_closep(&c->h);
return ret;
}
return 0;
static int subfile_close(URLContext *h)
{
SubfileContext *c = h->priv_data;
- return ffurl_close(c->h);
+ return ffurl_closep(&c->h);
}
static int subfile_read(URLContext *h, unsigned char *buf, int size)
static int64_t subfile_seek(URLContext *h, int64_t pos, int whence)
{
SubfileContext *c = h->priv_data;
- int64_t new_pos = -1, end;
+ int64_t new_pos, end;
int ret;
if (whence == AVSEEK_SIZE || whence == SEEK_END) {
new_pos = c->start + pos;
break;
case SEEK_CUR:
- new_pos += pos;
+ new_pos = c->pos + pos;
break;
case SEEK_END:
- new_pos = end + c->pos;
+ new_pos = end + pos;
break;
}
if (new_pos < c->start)