File 9341-Remove-catch-in-filelib.patch of Package erlang

From c455abd0269242392c5f94b5308000beffbd434a Mon Sep 17 00:00:00 2001
From: Maria Scott <maria-12648430@hnc-agency.org>
Date: Mon, 2 Mar 2026 17:10:26 +0100
Subject: [PATCH] Remove catch in filelib

---
 lib/stdlib/src/filelib.erl        | 53 ++++++++++++++++---------------
 lib/stdlib/test/filelib_SUITE.erl | 11 +++----
 2 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/lib/stdlib/src/filelib.erl b/lib/stdlib/src/filelib.erl
index 5e3b7ecc65..f84d5444dc 100644
--- a/lib/stdlib/src/filelib.erl
+++ b/lib/stdlib/src/filelib.erl
@@ -322,29 +320,34 @@ do_fold_files2([], _Dir, _RegExp, _OrigRE, _Recursive, _Fun, Acc, _Mod) ->
     Acc;
 do_fold_files2([File|T], Dir, RegExp, OrigRE, Recursive, Fun, Acc0, Mod) ->
     FullName = filename:join(Dir, File),
-    case do_is_regular(FullName, Mod) of
-	true  ->
-	    case (catch re:run(File, if is_binary(File) -> OrigRE; 
-					true -> RegExp end, 
-			       [{capture,none}])) of
-		match  -> 
-		    Acc = Fun(FullName, Acc0),
-		    do_fold_files2(T, Dir, RegExp, OrigRE, Recursive, Fun, Acc, Mod);
-		{'EXIT',_} ->
-		    do_fold_files2(T, Dir, RegExp, OrigRE, Recursive, Fun, Acc0, Mod);
-		nomatch ->
-		    do_fold_files2(T, Dir, RegExp, OrigRE, Recursive, Fun, Acc0, Mod)
-	    end;
-	false ->
-	    case Recursive andalso do_is_dir(FullName, Mod) of
-		true ->
-		    Acc1 = do_fold_files1(FullName, RegExp, OrigRE, Recursive,
-					  Fun, Acc0, Mod),
-		    do_fold_files2(T, Dir, RegExp, OrigRE, Recursive, Fun, Acc1, Mod);
-		false ->
-		    do_fold_files2(T, Dir, RegExp, OrigRE, Recursive, Fun, Acc0, Mod)
-	    end
-    end.
+    Acc1 = case do_is_regular(FullName, Mod) of
+               true  ->
+                   try
+                       re:run(File,
+                              if
+                                  is_binary(File) -> OrigRE;
+                                  true -> RegExp
+                              end,
+                              [{capture,none}])
+                   of
+                       match ->
+                           Fun(FullName, Acc0);
+                       nomatch ->
+                           Acc0
+                   catch
+                       _:_ ->
+                           Acc0
+                   end;
+               false ->
+                   case Recursive andalso do_is_dir(FullName, Mod) of
+                       true ->
+                           do_fold_files1(FullName, RegExp, OrigRE, Recursive,
+                                          Fun, Acc0, Mod);
+                       false ->
+                           Acc0
+                   end
+           end,
+    do_fold_files2(T, Dir, RegExp, OrigRE, Recursive, Fun, Acc1, Mod).
 
 do_last_modified(File, Mod) ->
     case eval_read_file_info(File, Mod) of
diff --git a/lib/stdlib/test/filelib_SUITE.erl b/lib/stdlib/test/filelib_SUITE.erl
index 3c04a10d8b..3c05f105cd 100644
--- a/lib/stdlib/test/filelib_SUITE.erl
+++ b/lib/stdlib/test/filelib_SUITE.erl
@@ -39,6 +39,7 @@
 
 -include_lib("common_test/include/ct.hrl").
 -include_lib("kernel/include/file.hrl").
+-include_lib("stdlib/include/assert.hrl").
 
 -define(PRIM_FILE, prim_file).
 
@@ -125,13 +126,9 @@ wildcard_errors(Config) when is_list(Config) ->
     ok.
 
 wcc(Wc, Error) ->
-    {'EXIT',{{badpattern,Error},
-	     [{filelib,compile_wildcard,1,_}|_]}} =
-	(catch filelib:compile_wildcard(Wc)),
-    {'EXIT',{{badpattern,Error},
-	     [{filelib,wildcard,1,_}|_]}} = (catch filelib:wildcard(Wc)),
-    {'EXIT',{{badpattern,Error},
-	     [{filelib,wildcard,2,_}|_]}} = (catch filelib:wildcard(Wc, ".")).
+    ok = ?assertError({badpattern, Error}, filelib:compile_wildcard(Wc)),
+    ok = ?assertError({badpattern, Error}, filelib:wildcard(Wc)),
+    ok = ?assertError({badpattern, Error}, filelib:wildcard(Wc, ".")).
 
 disable_prefix_opt([_,$:|_]=Wc) ->
     Wc;
-- 
2.51.0

openSUSE Build Service is sponsored by