mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
80 lines
2.5 KiB
Diff
80 lines
2.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
|
|
Date: Mon, 10 Apr 2023 16:06:19 +0200
|
|
Subject: [PATCH] tests: allocators: Fix fdmem test with recent GLib
|
|
|
|
The test failed with recent GLib, where `g_close` emits a critical
|
|
warning on EBADF. Remove the `g_close` check from `test_fdmem` and add
|
|
another version that tests `GST_FD_MEMORY_FLAG_DONT_CLOSE`.
|
|
|
|
We will depend on the Valgrind test run to warn us about leaked FDs.
|
|
|
|
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2480
|
|
---
|
|
.../tests/check/libs/allocators.c | 39 ++++++++++++++++++-
|
|
1 file changed, 38 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/subprojects/gst-plugins-base/tests/check/libs/allocators.c b/subprojects/gst-plugins-base/tests/check/libs/allocators.c
|
|
index 6b974b2900e9..c8ee75bcdbe3 100644
|
|
--- a/subprojects/gst-plugins-base/tests/check/libs/allocators.c
|
|
+++ b/subprojects/gst-plugins-base/tests/check/libs/allocators.c
|
|
@@ -95,21 +95,58 @@ GST_START_TEST (test_fdmem)
|
|
gst_memory_unmap (mem, &info);
|
|
|
|
gst_memory_unref (mem);
|
|
- fail_unless (g_close (fd, NULL) == 0);
|
|
+ gst_object_unref (alloc);
|
|
+}
|
|
+
|
|
+GST_END_TEST;
|
|
+
|
|
+GST_START_TEST (test_fdmem_dont_close)
|
|
+{
|
|
+ GstAllocator *alloc;
|
|
+ GstMemory *mem;
|
|
+ GstMapInfo info;
|
|
+ GError *error = NULL;
|
|
+ int fd;
|
|
+ const char *data = "0123456789";
|
|
+
|
|
+ fd = g_file_open_tmp (NULL, NULL, &error);
|
|
+ fail_if (error);
|
|
+ fail_unless (write (fd, data, 10) == 10);
|
|
+
|
|
+ alloc = gst_fd_allocator_new ();
|
|
+ fail_unless (alloc);
|
|
+ mem = gst_fd_allocator_alloc (alloc, fd, 10,
|
|
+ GST_FD_MEMORY_FLAG_KEEP_MAPPED | GST_FD_MEMORY_FLAG_DONT_CLOSE);
|
|
+
|
|
+ fail_unless (gst_memory_map (mem, &info, GST_MAP_READ));
|
|
+ fail_unless (info.data[5] == '5');
|
|
+ gst_memory_unmap (mem, &info);
|
|
+
|
|
+ fail_unless (gst_memory_map (mem, &info, GST_MAP_WRITE));
|
|
+ info.data[5] = 'X';
|
|
+ gst_memory_unmap (mem, &info);
|
|
+
|
|
+ fail_unless (gst_memory_map (mem, &info, GST_MAP_READ));
|
|
+ fail_unless (info.data[5] == 'X');
|
|
+ gst_memory_unmap (mem, &info);
|
|
+
|
|
+ gst_memory_unref (mem);
|
|
+ fail_unless (g_close (fd, NULL));
|
|
gst_object_unref (alloc);
|
|
}
|
|
|
|
GST_END_TEST;
|
|
|
|
static Suite *
|
|
allocators_suite (void)
|
|
{
|
|
Suite *s = suite_create ("allocators");
|
|
TCase *tc_chain = tcase_create ("general");
|
|
|
|
suite_add_tcase (s, tc_chain);
|
|
tcase_add_test (tc_chain, test_dmabuf);
|
|
tcase_add_test (tc_chain, test_fdmem);
|
|
+ tcase_add_test (tc_chain, test_fdmem_dont_close);
|
|
|
|
return s;
|
|
}
|