From d68c9517953ac1de6472ccb03b547aacacedf53f Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Sun, 18 Oct 2020 22:47:58 +0800 Subject: [PATCH] Pad string to exact length even when padding string is not multiple. --- src/fn_native.rs | 2 +- src/packages/string_more.rs | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/fn_native.rs b/src/fn_native.rs index 113f19a1..8a3c9a1d 100644 --- a/src/fn_native.rs +++ b/src/fn_native.rs @@ -49,7 +49,7 @@ pub type Locked = RefCell; #[cfg(feature = "sync")] pub type Locked = RwLock; -/// Context of a script evaluation process. +/// Context of native Rust function call. #[derive(Debug, Copy, Clone)] pub struct NativeCallContext<'e, 'm> { engine: &'e Engine, diff --git a/src/packages/string_more.rs b/src/packages/string_more.rs index cd71fd41..06217d11 100644 --- a/src/packages/string_more.rs +++ b/src/packages/string_more.rs @@ -324,8 +324,13 @@ mod string_functions { let p = s.make_mut(); while str_len < len as usize { - p.push_str(padding); - str_len += padding_len; + if str_len + padding_len <= len as usize { + p.push_str(padding); + str_len += padding_len; + } else { + p.extend(padding.chars().take(len as usize - str_len)); + str_len = len as usize; + } } #[cfg(not(feature = "unchecked"))]