[mutter] screen-cast/src: Handle failing to allocate shm buffers
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] screen-cast/src: Handle failing to allocate shm buffers
- Date: Tue, 2 Feb 2021 10:46:49 +0000 (UTC)
commit 08ad107df5f8cda76add0121c6fac8536d4a7cde
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Mon Feb 1 09:30:55 2021 +0100
screen-cast/src: Handle failing to allocate shm buffers
Don't leak the file descriptors, and don't fall over when trying to
clean up buffers that failed to allocate.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1697>
src/backends/meta-screen-cast-stream-src.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
---
diff --git a/src/backends/meta-screen-cast-stream-src.c b/src/backends/meta-screen-cast-stream-src.c
index 0682d7330a..3b09316487 100644
--- a/src/backends/meta-screen-cast-stream-src.c
+++ b/src/backends/meta-screen-cast-stream-src.c
@@ -781,6 +781,8 @@ on_stream_add_buffer (void *data,
if (ftruncate (spa_data[0].fd, spa_data[0].maxsize) < 0)
{
+ close (spa_data[0].fd);
+ spa_data[0].fd = -1;
g_critical ("Can't truncate to %d: %m", spa_data[0].maxsize);
return;
}
@@ -797,6 +799,8 @@ on_stream_add_buffer (void *data,
spa_data[0].mapoffset);
if (spa_data[0].data == MAP_FAILED)
{
+ close (spa_data[0].fd);
+ spa_data[0].fd = -1;
g_critical ("Failed to mmap memory: %m");
return;
}
@@ -820,8 +824,13 @@ on_stream_remove_buffer (void *data,
}
else if (spa_data[0].type == SPA_DATA_MemFd)
{
- munmap (spa_data[0].data, spa_data[0].maxsize);
- close (spa_data[0].fd);
+ g_warn_if_fail (spa_data[0].fd > 0 || !spa_data[0].data);
+
+ if (spa_data[0].fd > 0)
+ {
+ munmap (spa_data[0].data, spa_data[0].maxsize);
+ close (spa_data[0].fd);
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]