File 0681-fix-according-to-spec-format-can-be-io-format-0.patch of Package erlang
From 7f351684e7d4d225a542ae31e886ff200a3d415c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Niemier?= <lukasz@niemier.pl>
Date: Fri, 1 Nov 2019 12:20:15 +0100
Subject: [PATCH 1/2] fix: according to spec format can be io:format/0
Earlier it accepted only charlist which could be confusing for users
that would expect it to accept the same types as `io:fwrite/2`.
---
lib/kernel/src/logger.erl | 4 ++--
lib/kernel/src/logger_internal.hrl | 5 ++++-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/lib/kernel/src/logger.erl b/lib/kernel/src/logger.erl
index 153f839c0d..6f2a960a2d 100644
--- a/lib/kernel/src/logger.erl
+++ b/lib/kernel/src/logger.erl
@@ -1050,7 +1050,7 @@ do_log(Level,Msg,Meta) ->
Meta :: metadata().
log_allowed(Location,Level,{Fun,FunArgs},Meta) when is_function(Fun,1) ->
try Fun(FunArgs) of
- Msg={Format,Args} when is_list(Format), is_list(Args) ->
+ Msg={Format,Args} when ?IS_FORMAT(Format), is_list(Args) ->
log_allowed(Location,Level,Msg,Meta);
Report when ?IS_REPORT(Report) ->
log_allowed(Location,Level,Report,Meta);
@@ -1085,7 +1085,7 @@ log_allowed(Location,Level,Msg,Meta0) when is_map(Meta0) ->
do_log_allowed(Level,{Format,Args}=Msg,Meta,Tid)
when ?IS_LEVEL(Level),
- is_list(Format),
+ ?IS_FORMAT(Format),
is_list(Args),
is_map(Meta) ->
logger_backend:log_allowed(#{level=>Level,msg=>Msg,meta=>Meta},Tid);
diff --git a/lib/kernel/src/logger_internal.hrl b/lib/kernel/src/logger_internal.hrl
index c2b2d419e7..8c67672184 100644
--- a/lib/kernel/src/logger_internal.hrl
+++ b/lib/kernel/src/logger_internal.hrl
@@ -102,3 +102,6 @@
-define(IS_STRING(String),
(is_list(String) orelse is_binary(String))).
+
+-define(IS_FORMAT(Format),
+ (?IS_STRING(Format) orelse is_atom(Format))).
--
2.16.4