diff src/dynamic-ld.cc @ 2926:66ef74ee5d9f

[project @ 1997-05-05 03:20:52 by jwe]
author jwe
date Mon, 05 May 1997 03:40:21 +0000
parents 6be07b0aa4f8
children 1b47dd00a831
line wrap: on
line diff
--- a/src/dynamic-ld.cc	Sat May 03 21:24:19 1997 +0000
+++ b/src/dynamic-ld.cc	Mon May 05 03:40:21 1997 +0000
@@ -181,33 +181,43 @@
 
 #endif
 
-static octave_dynamic_loader *
-make_dynamic_loader (void)
+octave_dynamic_loader *octave_dynamic_loader::instance = 0;
+
+bool
+octave_dynamic_loader::instance_ok (void)
+{
+  bool retval = true;
+
+  if (! instance)
+    make_dynamic_loader ();
+
+  if (! instance)
+    {
+      error ("unable to create command history object!");
+
+      retval = false;
+    }
+
+  return retval;
+}
+
+void
+octave_dynamic_loader::make_dynamic_loader (void)
 {
 #if defined (WITH_DL)
-  return new octave_dlopen_dynamic_loader ();
+  instance = new octave_dlopen_dynamic_loader ();
 #elif defined (WITH_SHL)
-  return new octave_sh_load_dynamic_loader ();
+  instance = new octave_sh_load_dynamic_loader ();
 #else
-  return new octave_dynamic_loader ();
+  instance = new octave_dynamic_loader ();
 #endif
 }
 
-octave_dynamic_loader *octave_dynamic_loader::instance = 0;
-
-octave_dynamic_loader::octave_dynamic_loader (void)
-{
-}
-
-octave_dynamic_loader::~octave_dynamic_loader (void)
-{
-}
-
 int
 octave_dynamic_loader::load_fcn_from_dot_oct_file (const string& fcn_name)
 {
-  if (! instance)
-    instance = make_dynamic_loader ();
+  if (! instance_ok ())
+    make_dynamic_loader ();
 
   int retval = 0;