From a5d7eb5892cb02d988c492dd5726eada8198a799 Mon Sep 17 00:00:00 2001
From: Michael Gran <spk121@yahoo.com>
Date: Wed, 30 Mar 2011 20:42:37 -0700
Subject: [PATCH] More descriptive error for dynamic-pointer

If a symbol is not found, the cryptic "No Error" can be returned.

* libguile/dynl.c (sysdep_dynl_value): modify error message
---
 libguile/dynl.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/libguile/dynl.c b/libguile/dynl.c
index 2484dda..2630098 100644
--- a/libguile/dynl.c
+++ b/libguile/dynl.c
@@ -116,7 +116,22 @@ sysdep_dynl_value (const char *symb, void *handle, const char *subr)
   fptr = lt_dlsym ((lt_dlhandle) handle, symb);
   if (!fptr)
     {
-      scm_misc_error (subr, (char *) lt_dlerror (), SCM_EOL);
+      const char *lt_err = lt_dlerror ();
+      if (lt_err == (const char *) NULL || strncmp (lt_err, "No Error", strlen ("No Error")))
+	{
+	  char *msg;
+	  int ret;
+	  ret = asprintf (&msg, "symbol \"%s\" not found", symb);
+	  if (ret != -1)
+	    {
+	      scm_misc_error (subr, msg, SCM_EOL);
+	      free (msg);
+	    }
+	  else
+	    scm_misc_error (subr, "symbol not found", SCM_EOL);
+	}
+      else
+	scm_misc_error (subr, (char *) lt_dlerror (), SCM_EOL);
     }
   return fptr;
 }
-- 
1.7.4

