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,