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

openSUSE Build Service is sponsored by