Commit 677f11a8aba2ea84cf5970be84223fc732b037a0

Thomas de Grivel 2020-03-23T12:31:53

fix rtbuf lib

diff --git a/rtbuf_cli.c b/rtbuf_cli.c
index e6d34dc..4563d4c 100644
--- a/rtbuf_cli.c
+++ b/rtbuf_cli.c
@@ -38,7 +38,7 @@ int rtbuf_cli_libs (int argc, const char *argv[])
   printf("Listing %i libraries :\n", n);
   while (i < g_rtbuf_lib_alloc.n && n > 0) {
     if (g_rtbuf_lib[i].path[0]) {
-      rtbuf_lib_print(i);
+      rtbuf_lib_print(&g_rtbuf_lib[i]);
       n--;
     }
     i++;
@@ -62,15 +62,13 @@ int rtbuf_cli_lib (int argc, const char *argv[])
 int rtbuf_cli_load (int argc, const char *argv[])
 {
   s_rtbuf_lib *lib;
-  unsigned int i;
   assert(argc == 1);
   lib = rtbuf_lib_load(argv[1]);
   if (!lib) {
     printf("load failed\n");
     return -1;
   }
-  i = ((char*) lib - (char*) g_rtbuf_lib) / sizeof(s_rtbuf_lib);
-  rtbuf_lib_print(i);
+  rtbuf_lib_print(lib);
   return 0;
 }
 
diff --git a/rtbuf_gtk.c b/rtbuf_gtk.c
index 396e49f..a2b9085 100644
--- a/rtbuf_gtk.c
+++ b/rtbuf_gtk.c
@@ -81,9 +81,12 @@ RtbufWidget * rtbuf_gtk_new (gchar *library, gchar *proc,
       fprintf(stderr, "rtbuf-gtk: load failed: '%s'\n", library);
       return NULL;
     }
+    rtbuf_lib_print(rl);
   }
-  else
+  else {
+    assert(i < RTBUF_LIB_MAX);
     rl = &g_rtbuf_lib[i];
+  }
   i = rtbuf_lib_find_proc(rl, proc);
   if (i < 0) {
     fprintf(stderr, "rtbuf-gtk new: not found %s %s\n", library, proc);
diff --git a/rtbuf_lib.c b/rtbuf_lib.c
index 9be68c6..96b1778 100644
--- a/rtbuf_lib.c
+++ b/rtbuf_lib.c
@@ -285,10 +285,14 @@ void rtbuf_lib_proc_init_proc (s_rtbuf_proc *proc, s_rtbuf_lib_proc *x)
   rtbuf_lib_proc_out_init_proc(proc, x->out);
 }
 
-void rtbuf_lib_print (unsigned int i)
+void rtbuf_lib_print (const s_rtbuf_lib *lib)
 {
-  assert(i < RTBUF_LIB_MAX);
-  printf("#<lib %i %s>\n", i, g_rtbuf_lib[i].name);
+  unsigned int i;
+  if (lib >= g_rtbuf_lib &&
+      (i = lib - g_rtbuf_lib) < RTBUF_LIB_MAX)
+    printf("#<lib %i %s>\n", i, lib->name);
+  else
+    printf("#<lib %p %s>\n", lib, lib->name);
 }
 
 void rtbuf_lib_print_long (unsigned int i)
diff --git a/rtbuf_lib.h b/rtbuf_lib.h
index bdc25d6..f4dc01e 100644
--- a/rtbuf_lib.h
+++ b/rtbuf_lib.h
@@ -60,7 +60,7 @@ int           rtbuf_lib_find_proc (s_rtbuf_lib *rl, const char *str);
 void          rtbuf_lib_init_ ();
 s_rtbuf_lib * rtbuf_lib_load (const char *path);
 s_rtbuf_lib * rtbuf_lib_new ();
-void          rtbuf_lib_print (unsigned int i);
+void          rtbuf_lib_print (const s_rtbuf_lib *lib);
 void          rtbuf_lib_print_long (unsigned int i);
 
 void rtbuf_lib_proc_var_init_proc (s_rtbuf_proc *proc,