Quantcast
Channel: Latest commits for file sixel.c
Viewing all articles
Browse latest Browse all 71

sixel: fix double free caused by bad free() in sixel_colors_set()

$
0
0
sixel: fix double free caused by bad free() in sixel_colors_set() sixel_color_set() is called when the number of (sixel) color registers is changed. It frees the current palette, and changes the “palette size” variable. Originally, we only had a single palette. This is the one free:d by sixel_color_set(). Later, we added support for private vs. shared palettes. With this change, we now have one palette that is “never” free:d (the shared one), and a private palette that is always free:d after a sixel has been emitted. ‘sixel.palette’ is a pointer to the palette currently in use, and should only be accessed **while emitting a sixel**. This is the pointer sixel_color_set() free:d. So for example, if ‘sixel.palette’ pointed to the shared palette, we’d free the shared palette. But, we didn’t reset ‘sixel.shared_palette’, causing a double free later on. Closes #427

Viewing all articles
Browse latest Browse all 71

Trending Articles