diff libinterp/corefcn/graphics.cc @ 19843:408361a8c72f

Don't register gnuplot toolkit if gnuplot is not available (bug #35391) * __init_gnuplot__.cc (F__have_gnuplot__, have_gnuplot_binary): New functions to test for existence of gnuplot external program. (PKG_ADD): Don't register gnuplot toolkit unless gnuplot binary is available. (F__init_gnuplot): Error if gnuplot binary is not available. * graphics.cc (gtk_manager::do_get_toolkit): Provide better error message if no graphics toolkits are available.
author Mike Miller <mtmiller@ieee.org>
date Sat, 31 Jan 2015 02:42:15 -0500
parents db92e7e28e1f
children 50f14692e33b
line wrap: on
line diff
--- a/libinterp/corefcn/graphics.cc
+++ b/libinterp/corefcn/graphics.cc
@@ -10651,32 +10651,37 @@
 {
   graphics_toolkit retval;
 
-  const_loaded_toolkits_iterator pl = loaded_toolkits.find (dtk);
-
-  if (pl == loaded_toolkits.end ())
-    {
-      const_available_toolkits_iterator pa = available_toolkits.find (dtk);
-
-      if (pa != available_toolkits.end ())
-        {
-          octave_value_list args;
-          args(0) = dtk;
-          feval ("graphics_toolkit", args);
-
-          if (! error_state)
-            pl = loaded_toolkits.find (dtk);
-
-          if (error_state || pl == loaded_toolkits.end ())
-            error ("failed to load %s graphics toolkit", dtk.c_str ());
+  if (! dtk.empty ())
+    {
+      const_loaded_toolkits_iterator pl = loaded_toolkits.find (dtk);
+
+      if (pl == loaded_toolkits.end ())
+        {
+          const_available_toolkits_iterator pa = available_toolkits.find (dtk);
+
+          if (pa != available_toolkits.end ())
+            {
+              octave_value_list args;
+              args(0) = dtk;
+              feval ("graphics_toolkit", args);
+
+              if (! error_state)
+                pl = loaded_toolkits.find (dtk);
+
+              if (error_state || pl == loaded_toolkits.end ())
+                error ("failed to load %s graphics toolkit", dtk.c_str ());
+              else
+                retval = pl->second;
+            }
           else
-            retval = pl->second;
+            error ("default graphics toolkit '%s' is not available!",
+                   dtk.c_str ());
         }
       else
-        error ("default graphics toolkit '%s' is not available!",
-               dtk.c_str ());
-    }
-  else
-    retval = pl->second;
+        retval = pl->second;
+    }
+  else
+    error ("no graphics toolkits are available!");
 
   return retval;
 }