mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
pipewire: allow NULL pointers in pw_memmap_free()
Just like the real free() we should just ignore a NULL pointer, makes the caller code easier for those instances where properties are optional.
This commit is contained in:
parent
71e0cfb5fa
commit
1d4b24d02b
4 changed files with 18 additions and 16 deletions
|
|
@ -1472,8 +1472,7 @@ static int client_node_set_io(void *object,
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (old != NULL)
|
pw_memmap_free(old);
|
||||||
pw_memmap_free(old);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -2085,8 +2084,7 @@ static int client_node_port_set_io(void *object,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
exit_free:
|
exit_free:
|
||||||
if (old != NULL)
|
pw_memmap_free(old);
|
||||||
pw_memmap_free(old);
|
|
||||||
exit:
|
exit:
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
pw_proxy_error((struct pw_proxy*)c->node, res, spa_strerror(res));
|
pw_proxy_error((struct pw_proxy*)c->node, res, spa_strerror(res));
|
||||||
|
|
|
||||||
|
|
@ -386,8 +386,7 @@ static int impl_node_set_io(void *object, uint32_t id, void *data, size_t size)
|
||||||
memid = SPA_ID_INVALID;
|
memid = SPA_ID_INVALID;
|
||||||
mem_offset = mem_size = 0;
|
mem_offset = mem_size = 0;
|
||||||
}
|
}
|
||||||
if (old != NULL)
|
pw_memmap_free(old);
|
||||||
pw_memmap_free(old);
|
|
||||||
|
|
||||||
if (this->resource == NULL)
|
if (this->resource == NULL)
|
||||||
return data == NULL ? 0 : -EIO;
|
return data == NULL ? 0 : -EIO;
|
||||||
|
|
@ -706,8 +705,7 @@ static int do_port_set_io(struct impl *impl,
|
||||||
memid = SPA_ID_INVALID;
|
memid = SPA_ID_INVALID;
|
||||||
mem_offset = mem_size = 0;
|
mem_offset = mem_size = 0;
|
||||||
}
|
}
|
||||||
if (old != NULL)
|
pw_memmap_free(old);
|
||||||
pw_memmap_free(old);
|
|
||||||
|
|
||||||
if (this->resource == NULL)
|
if (this->resource == NULL)
|
||||||
return data == NULL ? 0 : -EIO;
|
return data == NULL ? 0 : -EIO;
|
||||||
|
|
|
||||||
|
|
@ -457,8 +457,7 @@ client_node_set_io(void *object,
|
||||||
|
|
||||||
res = spa_node_set_io(data->node->node, id, ptr, size);
|
res = spa_node_set_io(data->node->node, id, ptr, size);
|
||||||
|
|
||||||
if (old != NULL)
|
pw_memmap_free(old);
|
||||||
pw_memmap_free(old);
|
|
||||||
exit:
|
exit:
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
pw_log_error("node %p: set_io: %s", proxy, spa_strerror(res));
|
pw_log_error("node %p: set_io: %s", proxy, spa_strerror(res));
|
||||||
|
|
@ -809,8 +808,7 @@ client_node_port_set_io(void *object,
|
||||||
activate_mix(data, mix);
|
activate_mix(data, mix);
|
||||||
}
|
}
|
||||||
exit_free:
|
exit_free:
|
||||||
if (old != NULL)
|
pw_memmap_free(old);
|
||||||
pw_memmap_free(old);
|
|
||||||
exit:
|
exit:
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
pw_log_error("port %p: set_io: %s", mix, spa_strerror(res));
|
pw_log_error("port %p: set_io: %s", mix, spa_strerror(res));
|
||||||
|
|
|
||||||
|
|
@ -424,10 +424,18 @@ struct pw_memmap * pw_mempool_map_id(struct pw_mempool *pool,
|
||||||
SPA_EXPORT
|
SPA_EXPORT
|
||||||
int pw_memmap_free(struct pw_memmap *map)
|
int pw_memmap_free(struct pw_memmap *map)
|
||||||
{
|
{
|
||||||
struct memmap *mm = SPA_CONTAINER_OF(map, struct memmap, this);
|
struct memmap *mm;
|
||||||
struct mapping *m = mm->mapping;
|
struct mapping *m;
|
||||||
struct memblock *b = m->block;
|
struct memblock *b;
|
||||||
struct mempool *p = SPA_CONTAINER_OF(b->this.pool, struct mempool, this);
|
struct mempool *p;
|
||||||
|
|
||||||
|
if (map == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
mm = SPA_CONTAINER_OF(map, struct memmap, this);
|
||||||
|
m = mm->mapping;
|
||||||
|
b = m->block;
|
||||||
|
p = SPA_CONTAINER_OF(b->this.pool, struct mempool, this);
|
||||||
|
|
||||||
pw_log_debug(NAME" %p: map:%p block:%p fd:%d ptr:%p mapping:%p ref:%d", p,
|
pw_log_debug(NAME" %p: map:%p block:%p fd:%d ptr:%p mapping:%p ref:%d", p,
|
||||||
&mm->this, b, b->this.fd, mm->this.ptr, m, m->ref);
|
&mm->this, b, b->this.fd, mm->this.ptr, m, m->ref);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue