vpxenc: die on realloc failures
Identified as a possible cause of issue #308, the code was silently ignoring realloc failures, which would lead to corruption, memory leaks, and likely a crash. The best we can do in this case is die gracefully. Change-Id: Ie5f6a853d367015be5b9712bd742778f3baeefd9
This commit is contained in:
parent
0e43668546
commit
26b6a3b088
22
vpxenc.c
22
vpxenc.c
@ -236,7 +236,13 @@ void stats_write(stats_io_t *stats, const void *pkt, size_t len)
|
||||
stats->buf_ptr = new_ptr + (stats->buf_ptr - (char *)stats->buf.buf);
|
||||
stats->buf.buf = new_ptr;
|
||||
stats->buf_alloc_sz = new_sz;
|
||||
} /* else ... */
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,
|
||||
"\nFailed to realloc firstpass stats buffer.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(stats->buf_ptr, pkt, len);
|
||||
@ -698,10 +704,18 @@ write_webm_block(EbmlGlobal *glob,
|
||||
/* Save a cue point if this is a keyframe. */
|
||||
if(is_keyframe)
|
||||
{
|
||||
struct cue_entry *cue;
|
||||
struct cue_entry *cue, *new_cue_list;
|
||||
|
||||
new_cue_list = realloc(glob->cue_list,
|
||||
(glob->cues+1) * sizeof(struct cue_entry));
|
||||
if(new_cue_list)
|
||||
glob->cue_list = new_cue_list;
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "\nFailed to realloc cue list.\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
glob->cue_list = realloc(glob->cue_list,
|
||||
(glob->cues+1) * sizeof(struct cue_entry));
|
||||
cue = &glob->cue_list[glob->cues];
|
||||
cue->time = glob->cluster_timecode;
|
||||
cue->loc = glob->cluster_pos;
|
||||
|
Loading…
x
Reference in New Issue
Block a user