Index: trunk/src/layer.c =================================================================== --- trunk/src/layer.c (revision 17780) +++ trunk/src/layer.c (revision 17781) @@ -148,6 +148,7 @@ if (layer->polygon_tree) pcb_r_destroy_tree(&layer->polygon_tree); } + free(layer->name); memset(layer, 0, sizeof(pcb_layer_t)); } Index: trunk/src/layer_ui.c =================================================================== --- trunk/src/layer_ui.c (revision 17780) +++ trunk/src/layer_ui.c (revision 17781) @@ -32,6 +32,7 @@ #include "config.h" #include "layer.h" #include "event.h" +#include "compat_misc.h" #define GVT_DONT_UNDEF #include "layer_ui.h" #include @@ -58,7 +59,7 @@ found:; l->meta.real.cookie = cookie; l->meta.real.color = color; - l->name = name; + l->name = pcb_strdup(name); l->meta.real.vis = 1; pcb_event(PCB_EVENT_LAYERS_CHANGED, NULL); return l; Index: trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/layout/layers.c =================================================================== --- trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/layout/layers.c (revision 17780) +++ trunk/src_plugins/gpmi/pcb-gpmi/gpmi_plugin/gpmi_pkg/layout/layers.c (revision 17781) @@ -104,7 +104,7 @@ layer_id_t uilayer_alloc(const char *name, const char *color) { - pcb_layer_t *l = pcb_uilayer_alloc("script", pcb_strdup(name), pcb_strdup(color)); + pcb_layer_t *l = pcb_uilayer_alloc("script", name, pcb_strdup(color)); if (l == NULL) return -1; return pcb_layer_id(PCB->Data, l);