mirror of
https://github.com/dgibson/dtc.git
synced 2025-10-13 16:27:39 -04:00
srcpos: Define srcpos_free
srcpos can be chained together using srcpos_extend. However, in such cases, we need to free all the chained nodes. srcpos_free is a helper to recursively free all the linked srcpos. Signed-off-by: Ayush Singh <ayush@beagleboard.org> Message-ID: <20250605-previous-value-v3-1-0983d0733a07@beagleboard.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
e0b7749c26
commit
b841391bbd
3 changed files with 13 additions and 1 deletions
|
@ -174,7 +174,7 @@ struct node *merge_nodes(struct node *old_node, struct node *new_node)
|
||||||
|
|
||||||
old_prop->val = new_prop->val;
|
old_prop->val = new_prop->val;
|
||||||
old_prop->deleted = 0;
|
old_prop->deleted = 0;
|
||||||
free(old_prop->srcpos);
|
srcpos_free(old_prop->srcpos);
|
||||||
old_prop->srcpos = new_prop->srcpos;
|
old_prop->srcpos = new_prop->srcpos;
|
||||||
free(new_prop);
|
free(new_prop);
|
||||||
new_prop = NULL;
|
new_prop = NULL;
|
||||||
|
|
11
srcpos.c
11
srcpos.c
|
@ -287,6 +287,17 @@ struct srcpos *srcpos_extend(struct srcpos *pos, struct srcpos *newtail)
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void srcpos_free(struct srcpos *pos)
|
||||||
|
{
|
||||||
|
struct srcpos *p_next;
|
||||||
|
|
||||||
|
while (pos) {
|
||||||
|
p_next = pos->next;
|
||||||
|
free(pos);
|
||||||
|
pos = p_next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
srcpos_string(struct srcpos *pos)
|
srcpos_string(struct srcpos *pos)
|
||||||
{
|
{
|
||||||
|
|
1
srcpos.h
1
srcpos.h
|
@ -88,6 +88,7 @@ extern void srcpos_update(struct srcpos *pos, const char *text, int len);
|
||||||
extern struct srcpos *srcpos_copy(struct srcpos *pos);
|
extern struct srcpos *srcpos_copy(struct srcpos *pos);
|
||||||
extern struct srcpos *srcpos_extend(struct srcpos *new_srcpos,
|
extern struct srcpos *srcpos_extend(struct srcpos *new_srcpos,
|
||||||
struct srcpos *old_srcpos);
|
struct srcpos *old_srcpos);
|
||||||
|
extern void srcpos_free(struct srcpos *pos);
|
||||||
extern char *srcpos_string(struct srcpos *pos);
|
extern char *srcpos_string(struct srcpos *pos);
|
||||||
extern char *srcpos_string_first(struct srcpos *pos, int level);
|
extern char *srcpos_string_first(struct srcpos *pos, int level);
|
||||||
extern char *srcpos_string_last(struct srcpos *pos, int level);
|
extern char *srcpos_string_last(struct srcpos *pos, int level);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue