Hi Eric,
Factoring out some of the fallout now:
* Eric Blake wrote on Sun, Nov 13, 2005 at 05:50:31AM CET:
>
> This made me realize that there is another problem with
> lt_dlinterface_register:
>
> 2005-10-26 Eric Blake <[EMAIL PROTECTED]>
>
> * libltdl/ltdl.c (lt_dlinterface_register): Fail if lt__strdup did.
I have applied this patch to HEAD.
Cheers,
Ralf
2005-11-13 Eric Blake <[EMAIL PROTECTED]>
* libltdl/ltdl.c (lt_dlhandle_iterate): Fix endless loop.
(lt_dlinterface_register): Fail if lt__strdup did.
Index: libltdl/ltdl.c
===================================================================
RCS file: /cvsroot/libtool/libtool/libltdl/ltdl.c,v
retrieving revision 1.236
diff -u -r1.236 ltdl.c
--- libltdl/ltdl.c 26 Oct 2005 10:26:48 -0000 1.236
+++ libltdl/ltdl.c 13 Nov 2005 21:57:59 -0000
@@ -2027,7 +2027,10 @@
if (interface_id)
{
interface_id->id_string = lt__strdup (id_string);
- interface_id->iface = iface;
+ if (!interface_id->id_string)
+ FREE (interface_id);
+ else
+ interface_id->iface = iface;
}
return (lt_dlinterface_id) interface_id;
@@ -2125,6 +2128,8 @@
if (!handle)
handle = (lt__handle *) handles;
+ else
+ handle = handle->next;
/* advance while the interface check fails */
while (handle && iterator->iface