File 1373-stdlib-Make-ets-tab2file-return-error-badtab-if-priv.patch of Package erlang
From 989f67e2803279680542eebbe9ee471b0c600f64 Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Mon, 12 Jan 2026 18:03:53 +0100
Subject: [PATCH 3/3] stdlib: Make ets:tab2file return {error,badtab} if
private table
Yes, ets:tab2file for some reason returns error tuple for bad table
instead of badarg exception like all others.
So we make tab2file more consistent with itself.
---
lib/stdlib/src/ets.erl | 9 ++++++++-
lib/stdlib/test/ets_SUITE.erl | 7 +------
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/lib/stdlib/src/ets.erl b/lib/stdlib/src/ets.erl
index 39c675fc33..6ea424278f 100644
--- a/lib/stdlib/src/ets.erl
+++ b/lib/stdlib/src/ets.erl
@@ -2388,7 +2388,14 @@ tab2file(TabArg, File, Options) ->
end,
true}
end,
- ets:safe_fixtable(Table,true),
+ try
+ ets:safe_fixtable(Table,true)
+ catch
+ error:badarg ->
+ %% Table is probably someone else's private.
+ %% Be consistent and return error tuple.
+ throw(badtab)
+ end,
{NewState1,Num} = try
NewState = LogFun(InitState,Info),
dump_file(
diff --git a/lib/stdlib/test/ets_SUITE.erl b/lib/stdlib/test/ets_SUITE.erl
index db151e9d14..d613da27c0 100644
--- a/lib/stdlib/test/ets_SUITE.erl
+++ b/lib/stdlib/test/ets_SUITE.erl
@@ -3761,12 +3761,7 @@ bad_table_call(T,{F,Args,_}) ->
bad_table_call(T,{F,Args,_,tabarg_last}) ->
{'EXIT',{badarg,_}} = (catch apply(ets, F, Args++[T]));
bad_table_call(T,{F,Args,_,{return,Return}}) ->
- try
- Return = apply(ets, F, [T|Args])
- catch
- error:badarg -> ok
- end.
-
+ Return = apply(ets, F, [T|Args]).
%% Check rename of ets tables.
rename(Config) when is_list(Config) ->
--
2.51.0