| 2453 | } |
| 2454 | |
| 2455 | static void node_fields_free(cbm_node_t *n) { |
| 2456 | if (!n) { |
| 2457 | return; |
| 2458 | } |
| 2459 | safe_str_free(&n->project); |
| 2460 | safe_str_free(&n->label); |
| 2461 | safe_str_free(&n->name); |
| 2462 | safe_str_free(&n->qualified_name); |
| 2463 | safe_str_free(&n->file_path); |
| 2464 | safe_str_free(&n->properties_json); |
| 2465 | } |
| 2466 | |
| 2467 | /* Deep copy an edge (binding owns the strings) */ |
| 2468 | static void edge_deep_copy(cbm_edge_t *dst, const cbm_edge_t *src) { |
no test coverage detected