Skip to content

Commit 9237338

Browse files
committed
resolve initializing heif_encoding_options in ImageItem_Grid (#1523)
1 parent 6dcbad3 commit 9237338

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

libheif/image-items/grid.cc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,18 +146,20 @@ std::string ImageGrid::dump() const
146146
ImageItem_Grid::ImageItem_Grid(HeifContext* ctx)
147147
: ImageItem(ctx)
148148
{
149-
auto* options = heif_encoding_options_alloc();
150-
heif_encoding_options_copy(&m_encoding_options, options);
151-
heif_encoding_options_free(options);
149+
m_encoding_options = heif_encoding_options_alloc();
152150
}
153151

154152

155153
ImageItem_Grid::ImageItem_Grid(HeifContext* ctx, heif_item_id id)
156154
: ImageItem(ctx, id)
157155
{
158-
auto* options = heif_encoding_options_alloc();
159-
heif_encoding_options_copy(&m_encoding_options, options);
160-
heif_encoding_options_free(options);
156+
m_encoding_options = heif_encoding_options_alloc();
157+
}
158+
159+
160+
ImageItem_Grid::~ImageItem_Grid()
161+
{
162+
heif_encoding_options_free(m_encoding_options);
161163
}
162164

163165

libheif/image-items/grid.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ class ImageItem_Grid : public ImageItem
8080

8181
ImageItem_Grid(HeifContext* ctx);
8282

83+
~ImageItem_Grid() override;
84+
8385
uint32_t get_infe_type() const override { return fourcc("grid"); }
8486

8587
static Result<std::shared_ptr<ImageItem_Grid>> add_new_grid_item(HeifContext* ctx,
@@ -113,10 +115,10 @@ class ImageItem_Grid : public ImageItem
113115
int get_chroma_bits_per_pixel() const override;
114116

115117
void set_encoding_options(const heif_encoding_options* options) {
116-
m_encoding_options = *options;
118+
heif_encoding_options_copy(m_encoding_options, options);
117119
}
118120

119-
const heif_encoding_options* get_encoding_options() const { return &m_encoding_options; }
121+
const heif_encoding_options* get_encoding_options() const { return m_encoding_options; }
120122

121123
Result<Encoder::CodedImageData> encode(const std::shared_ptr<HeifPixelImage>& image,
122124
struct heif_encoder* encoder,
@@ -155,7 +157,7 @@ class ImageItem_Grid : public ImageItem
155157
ImageGrid m_grid_spec;
156158
std::vector<heif_item_id> m_grid_tile_ids;
157159

158-
heif_encoding_options m_encoding_options;
160+
heif_encoding_options* m_encoding_options = nullptr;
159161

160162
Error read_grid_spec();
161163

0 commit comments

Comments
 (0)