- if (!s->sList[1]) {
- for (i = 1; i < s->threads_number; i++) {
- s->sList[i] = av_malloc(sizeof(HEVCContext));
- memcpy(s->sList[i], s, sizeof(HEVCContext));
- s->HEVClcList[i] = av_mallocz(sizeof(HEVCLocalContext));
- s->sList[i]->HEVClc = s->HEVClcList[i];
+ for (i = 1; i < s->threads_number; i++) {
+ if (s->sList[i] && s->HEVClcList[i])
+ continue;
+ av_freep(&s->sList[i]);
+ av_freep(&s->HEVClcList[i]);
+ s->sList[i] = av_malloc(sizeof(HEVCContext));
+ s->HEVClcList[i] = av_mallocz(sizeof(HEVCLocalContext));
+ if (!s->sList[i] || !s->HEVClcList[i]) {
+ res = AVERROR(ENOMEM);
+ goto error;