You only back Applets with memory, but the structs content remain uninitialized and might very well be something else than NULL. Also, you probably want to build your linked list different using a more common approach like:
typedef struct Applet
{
STRING *Name;
STRING *Author;
STRING *Version;
STRING *Description;
PANEL *Container;
void *Initilize;
void *Deinitlize;
int init;
struct Applet *next;
struct Applet *prev;
} Applet;
Applet *listHead = NULL;
Applet *listTail = NULL;
void RegisterApplet(Applet *applet)
{
if(listHead)
{
applet->next = NULL;
applet->prev = listTaile;
listTail->next = applet;
listTail = applet;
}
else
{
applet->next = applet->prev = NULL;
listTail = applet;
listHead = applet;
}
}