fix warning: variable X might be clobbered by 'longjmp'

Move calls to setjmp into separate function to avoid clobbering
local variables.
This commit is contained in:
Adrian Johnson 2017-10-21 13:02:42 +10:30
parent 132794f683
commit b092b63119
2 changed files with 18 additions and 7 deletions

View file

@ -593,6 +593,12 @@ sweep_line_insert (sweep_line_t *sweep, rectangle_t *rectangle)
pqueue_push (sweep, rectangle);
}
static int
sweep_line_setjmp (sweep_line_t *sweep_line)
{
return setjmp (sweep_line->unwind);
}
static cairo_status_t
_cairo_bentley_ottmann_tessellate_rectangular (rectangle_t **rectangles,
int num_rectangles,
@ -609,7 +615,7 @@ _cairo_bentley_ottmann_tessellate_rectangular (rectangle_t **rectangles,
rectangles, num_rectangles,
fill_rule,
do_traps, container);
if ((status = setjmp (sweep_line.unwind)))
if ((status = sweep_line_setjmp (&sweep_line)))
return status;
rectangle = rectangle_pop_start (&sweep_line);

View file

@ -158,6 +158,14 @@ png_simple_warning_callback (png_structp png,
*/
}
static int
png_setjmp (png_struct *png)
{
#ifdef PNG_SETJMP_SUPPORTED
return setjmp (png_jmpbuf (png));
#endif
return 0;
}
/* Starting with libpng-1.2.30, we must explicitly specify an output_flush_fn.
* Otherwise, we will segfault if we are writing to a stream. */
@ -229,10 +237,8 @@ write_png (cairo_surface_t *surface,
goto BAIL4;
}
#ifdef PNG_SETJMP_SUPPORTED
if (setjmp (png_jmpbuf (png)))
if (png_setjmp (png))
goto BAIL4;
#endif
png_set_write_fn (png, closure, write_func, png_simple_output_flush_fn);
@ -573,12 +579,11 @@ read_png (struct png_read_closure_t *png_closure)
png_set_read_fn (png, png_closure, stream_read_func);
status = CAIRO_STATUS_SUCCESS;
#ifdef PNG_SETJMP_SUPPORTED
if (setjmp (png_jmpbuf (png))) {
if (png_setjmp (png)) {
surface = _cairo_surface_create_in_error (status);
goto BAIL;
}
#endif
png_read_info (png, info);