Mercurial > octave
diff libinterp/dldfcn/__init_gnuplot__.cc @ 26636:803006651db5 stable
Disallow recursion in drawnow for gnuplot toolkit (bug #55528)
* graphics.cc (Fdrawnow): Revert cset 32d4ee071348.
* __init_gnuplot__.cc (gnuplot_graphics_toolkit::redraw_figure): Prevent
recursion for any gnuplot terminal.
author | Pantxo Diribarne <pantxo.diribarne@gmail.com> |
---|---|
date | Fri, 25 Jan 2019 16:15:54 +0100 |
parents | 00f796120a6d |
children | db687716fed6 |
line wrap: on
line diff
--- a/libinterp/dldfcn/__init_gnuplot__.cc Sat Jan 26 22:17:18 2019 +0100 +++ b/libinterp/dldfcn/__init_gnuplot__.cc Fri Jan 25 16:15:54 2019 +0100 @@ -105,9 +105,19 @@ void redraw_figure (const graphics_object& go) const { - octave_value_list args; - args(0) = go.get_handle ().as_octave_value (); - octave::feval ("__gnuplot_drawnow__", args); + static bool drawnow_executing = false; + + // Prevent recursion + if (! drawnow_executing) + { + octave::unwind_protect frame; + frame.protect_var (drawnow_executing); + + drawnow_executing = true; + octave_value_list args; + args(0) = go.get_handle ().as_octave_value (); + octave::feval ("__gnuplot_drawnow__", args); + } } void print_figure (const graphics_object& go, const std::string& term,