diff --git a/packages/p/perl-SDL/.files b/packages/p/perl-SDL/.files
index bf1e6912644..4363ffe8f7d 100644
Binary files a/packages/p/perl-SDL/.files and b/packages/p/perl-SDL/.files differ
diff --git a/packages/p/perl-SDL/.rev b/packages/p/perl-SDL/.rev
index 0562ba043c6..a3b5518e047 100644
--- a/packages/p/perl-SDL/.rev
+++ b/packages/p/perl-SDL/.rev
@@ -93,4 +93,14 @@
1102970
+
+ cd1f48186c497baf0250a9bb97c2be91
+ 2.548
+
+ dimstar_suse
+ - Add 308.patch: Fix reference-counting in set_event_filter
+ (gh#PerlGameDev/SDL#308).
+
+ 1168524
+
diff --git a/packages/p/perl-SDL/308.patch b/packages/p/perl-SDL/308.patch
new file mode 100644
index 00000000000..709984c54ec
--- /dev/null
+++ b/packages/p/perl-SDL/308.patch
@@ -0,0 +1,30 @@
+From fbf151a7481a5fda88bfe766d826fe55476cf4af Mon Sep 17 00:00:00 2001
+From: Colin Watson
+Date: Thu, 28 Mar 2024 13:21:47 +0000
+Subject: [PATCH] Fix reference-counting in set_event_filter
+
+This previously resulted in the following test failure with Perl 5.38.2
+on Debian unstable (https://bugs.debian.org/1064761):
+
+ t/core_events.t ................. 1/? Can't use an undefined value as a subroutine reference during global destruction.
+ t/core_events.t ................. Dubious, test returned 22 (wstat 5632, 0x1600)
+ All 691 subtests passed
+ (less 1 skipped subtest: 690 okay)
+---
+ src/Core/Events.xs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/Core/Events.xs b/src/Core/Events.xs
+index faa7cfe6..0b99f8a9 100644
+--- a/src/Core/Events.xs
++++ b/src/Core/Events.xs
+@@ -102,7 +102,8 @@ void
+ events_set_event_filter(callback)
+ SV* callback
+ CODE:
+- eventfiltersv = callback;
++ SvREFCNT_dec(eventfiltersv);
++ eventfiltersv = SvREFCNT_inc_simple(callback);
+ SDL_SetEventFilter((SDL_EventFilter) eventfilter_cb);
+
+ AV *
diff --git a/packages/p/perl-SDL/cpanspec.yml b/packages/p/perl-SDL/cpanspec.yml
index 6d81465da0a..7777fbbc499 100644
--- a/packages/p/perl-SDL/cpanspec.yml
+++ b/packages/p/perl-SDL/cpanspec.yml
@@ -13,9 +13,8 @@ description: |-
sources:
- perl-SDL.rpmlintrc
patches:
- https://patch-diff.githubusercontent.com/raw/PerlGameDev/SDL/pull/304.patch: -p1
-# foo.patch: -p1
-# bar.patch:
+ https://patch-diff.githubusercontent.com/raw/PerlGameDev/SDL/pull/304.patch: -p1 PATCH-FIX-UPSTREAM 304.patch -- based on PR 304
+ https://patch-diff.githubusercontent.com/raw/PerlGameDev/SDL/pull/308.patch: -p1 PATCH-FIX-UPSTREAM 308.patch -- based on PR 308
preamble: |-
BuildRequires: Mesa-devel
BuildRequires: libSDL-devel
diff --git a/packages/p/perl-SDL/perl-SDL.changes b/packages/p/perl-SDL/perl-SDL.changes
index a5a3b8f21a3..e9d34723e7e 100644
--- a/packages/p/perl-SDL/perl-SDL.changes
+++ b/packages/p/perl-SDL/perl-SDL.changes
@@ -1,3 +1,9 @@
+-------------------------------------------------------------------
+Mon Apr 15 18:43:39 UTC 2024 - munix9@googlemail.com
+
+- Add 308.patch: Fix reference-counting in set_event_filter
+ (gh#PerlGameDev/SDL#308).
+
-------------------------------------------------------------------
Tue Aug 8 14:59:43 UTC 2023 - Dominique Leuenberger
diff --git a/packages/p/perl-SDL/perl-SDL.spec b/packages/p/perl-SDL/perl-SDL.spec
index 5c6644cdb44..a7c652741f7 100644
--- a/packages/p/perl-SDL/perl-SDL.spec
+++ b/packages/p/perl-SDL/perl-SDL.spec
@@ -1,7 +1,7 @@
#
# spec file for package perl-SDL
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,10 @@ URL: https://metacpan.org/release/%{cpan_name}
Source0: https://cpan.metacpan.org/authors/id/F/FR/FROGGS/%{cpan_name}-%{version}.tar.gz
Source1: perl-SDL.rpmlintrc
Source2: cpanspec.yml
+# PATCH-FIX-UPSTREAM 304.patch -- based on PR 304
Patch0: https://patch-diff.githubusercontent.com/raw/PerlGameDev/SDL/pull/304.patch
+# PATCH-FIX-UPSTREAM 308.patch -- based on PR 308
+Patch1: https://patch-diff.githubusercontent.com/raw/PerlGameDev/SDL/pull/308.patch
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(Alien::SDL) >= 1.446