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