Index: cam/cam_gui.c =================================================================== --- cam/cam_gui.c (revision 37111) +++ cam/cam_gui.c (revision 37112) @@ -105,7 +105,7 @@ case PCB_CAM_WRITE: strncpy(tmp, c->op.write.arg, sizeof(tmp)); - cell[0] = tmp; + cell[0] = rnd_strdup(tmp); cell[2] = strchr(tmp, '='); if (cell[2] != NULL) { *cell[2] = '\0'; @@ -113,13 +113,15 @@ } else cell[2] = ""; + cell[2] = rnd_strdup(cell[2]); if (plugin != NULL) cell[1] = rnd_strdup(plugin->op.plugin.exporter->name); else - cell[1] = ""; + cell[1] = rnd_strdup(""); cell[3] = NULL; + rnd_dad_tree_append(attr, NULL, cell); break; } Index: drc_query/dlg.c =================================================================== --- drc_query/dlg.c (revision 37111) +++ drc_query/dlg.c (revision 37112) @@ -477,9 +477,9 @@ role = rnd_conf_lookup_role(rule); src = textval_empty(rule, "source"); - cell[0] = rule->name; + cell[0] = rnd_strdup(rule->name); cell[1] = rnd_strdup(rnd_conf_role_name(role)); - cell[2] = *dis ? "YES" : "no"; + cell[2] = rnd_strdup(*dis ? "YES" : "no"); if (st->run_cnt > 0) cell[3] = rnd_strdup_printf("%.3fs", st->last_run_time); else @@ -491,10 +491,10 @@ char *pcell[5]; if (parent == NULL) { - pcell[0] = (char *)src; - pcell[1] = ""; - pcell[2] = ""; - pcell[3] = ""; + pcell[0] = rnd_strdup(src); + pcell[1] = rnd_strdup(""); + pcell[2] = rnd_strdup(""); + pcell[3] = rnd_strdup(""); pcell[4] = NULL; parent = rnd_dad_tree_append(tree->attrib, NULL, pcell); } @@ -775,7 +775,7 @@ role = rnd_conf_lookup_role(rule); src = textval_empty(rule, "source"); - cell[0] = rule->name; + cell[0] = rnd_strdup(rule->name); cell[1] = rnd_strdup(rnd_conf_role_name(role)); if (*src != '\0') { @@ -784,8 +784,8 @@ char *pcell[3]; if (parent == NULL) { - pcell[0] = (char *)src; - pcell[1] = ""; + pcell[0] = rnd_strdup(src); + pcell[1] = rnd_strdup(""); pcell[2] = NULL; parent = rnd_dad_tree_append(tree->attrib, NULL, pcell); }