cleanup: av_free(tmp_row);
static int read_uncompressed_sgi(const SGIInfo *si,         AVPicture *pict, ByteIOContext *f){    int x, y, z, chan_offset, ret = 0;    uint8_t *dest_row, *tmp_row = NULL;    tmp_row = av_malloc(si->xsize);    /* skip header */     url_fseek(f, SGI_HEADER_SIZE, SEEK_SET);    pict->linesize[0] = si->xsize;    for (z = 0; z < si->zsize; z++) {#ifndef WORDS_BIGENDIAN        /* rgba -> bgra for rgba32 on little endian cpus */        if (si->zsize == 4 && z != 3)             chan_offset = 2 - z;        else#endif            chan_offset = z;                    for (y = si->ysize - 1; y >= 0; y--) {            dest_row = pict->data[0] + (y * si->xsize * si->zsize);            if (!get_buffer(f, tmp_row, si->xsize)) {                ret = -1;                goto cleanup;            }            for (x = 0; x < si->xsize; x++) {                dest_row[chan_offset] = tmp_row[x];                 dest_row += si->zsize;            }        }    }cleanup:    av_free(tmp_row);    return ret;}