]> git.lizzy.rs Git - rust.git/commitdiff
Avoid zero-length write_str in fmt::write
authorMark Rousskov <mark.simulacrum@gmail.com>
Mon, 17 May 2021 13:30:58 +0000 (09:30 -0400)
committerMark Rousskov <mark.simulacrum@gmail.com>
Mon, 17 May 2021 13:30:58 +0000 (09:30 -0400)
library/core/src/fmt/mod.rs

index 5cb3c9062fe731b8e97236a3560bb53f8a69e6e3..afef790ca64ea3ae3a30d393e340aee062bd5331 100644 (file)
@@ -1104,7 +1104,9 @@ pub fn write(output: &mut dyn Write, args: Arguments<'_>) -> Result {
         None => {
             // We can use default formatting parameters for all arguments.
             for (arg, piece) in iter::zip(args.args, args.pieces) {
-                formatter.buf.write_str(*piece)?;
+                if !piece.is_empty() {
+                    formatter.buf.write_str(*piece)?;
+                }
                 (arg.formatter)(arg.value, &mut formatter)?;
                 idx += 1;
             }
@@ -1113,7 +1115,9 @@ pub fn write(output: &mut dyn Write, args: Arguments<'_>) -> Result {
             // Every spec has a corresponding argument that is preceded by
             // a string piece.
             for (arg, piece) in iter::zip(fmt, args.pieces) {
-                formatter.buf.write_str(*piece)?;
+                if !piece.is_empty() {
+                    formatter.buf.write_str(*piece)?;
+                }
                 // SAFETY: arg and args.args come from the same Arguments,
                 // which guarantees the indexes are always within bounds.
                 unsafe { run(&mut formatter, arg, &args.args) }?;