diff options
author | Dominik Picheta <dominikpicheta@googlemail.com> | 2018-01-11 18:41:34 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-11 18:41:34 +0000 |
commit | 082868f1bbec496b52d7ce6d894eec466802c980 (patch) | |
tree | 0e88045766cdc6f250399ae47f3370f67d16c34e | |
parent | 425f221440cbd453591d0fca9eaf93671d5f6d62 (diff) | |
parent | 852e1d3da17c3a616a8e6d8cc5e3c711f527b52e (diff) | |
download | Nim-082868f1bbec496b52d7ce6d894eec466802c980.tar.gz |
Merge pull request #7063 from yglukhov/logging-dont-crash-on-nil
logging: don't crash on nil strings
-rw-r--r-- | lib/pure/logging.nim | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/pure/logging.nim b/lib/pure/logging.nim index 830820fd1..751fc0e8d 100644 --- a/lib/pure/logging.nim +++ b/lib/pure/logging.nim @@ -107,9 +107,14 @@ var proc substituteLog*(frmt: string, level: Level, args: varargs[string, `$`]): string = ## Format a log message using the ``frmt`` format string, ``level`` and varargs. ## See the module documentation for the format string syntax. + const nilString = "nil" + var msgLen = 0 for arg in args: - msgLen += arg.len + if arg.isNil: + msgLen += nilString.len + else: + msgLen += arg.len result = newStringOfCap(frmt.len + msgLen + 20) var i = 0 while i < frmt.len: @@ -136,7 +141,10 @@ proc substituteLog*(frmt: string, level: Level, args: varargs[string, `$`]): str of "levelname": result.add(LevelNames[level]) else: discard for arg in args: - result.add(arg) + if arg.isNil: + result.add(nilString) + else: + result.add(arg) method log*(logger: Logger, level: Level, args: varargs[string, `$`]) {. raises: [Exception], gcsafe, @@ -361,3 +369,6 @@ when not defined(testing) and isMainModule: addHandler(L) for i in 0 .. 25: info("hello", i) + + var nilString: string + info "hello ", nilString |