From e093b2be1c333e67c96aebb0a5291bea9ae3d6db Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 18 Aug 2026 01:57:02 +0900 Subject: refactor(preg): drop the offset argument from preg_match Every call site but one passed offset 0. The remaining one, the UTF-8 chunking loop in Application, slices the subject instead: its pattern has no anchor or lookaround, so matching a suffix is equivalent to starting the search at that offset. Co-Authored-By: Claude Opus 5 (1M context) --- crates/shirabe/src/util/process_executor.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'crates/shirabe/src/util/process_executor.rs') diff --git a/crates/shirabe/src/util/process_executor.rs b/crates/shirabe/src/util/process_executor.rs index 158729b4..64082064 100644 --- a/crates/shirabe/src/util/process_executor.rs +++ b/crates/shirabe/src/util/process_executor.rs @@ -11,7 +11,7 @@ use shirabe_php_shim::Catch as _; use shirabe_php_shim::{ LogicException, PHP_EOL, PhpMixed, PregMatches, RuntimeException, array_intersect, array_map, escapeshellarg, explode, implode, in_array_strict, is_array, is_dir, is_numeric, is_string, - php_regex, preg_match2, preg_replace, preg_replace_callback, preg_replace2, preg_split, rtrim, + php_regex, preg_match, preg_replace, preg_replace_callback, preg_replace2, preg_split, rtrim, str_replace, strcspn, strlen, strpbrk, strtolower, strtr_array, substr_replace, trim, }; use shirabe_symfony_process::ExecutableFinder; @@ -216,7 +216,7 @@ impl ProcessExecutor { if is_string(&command) { let mut command_str = command.as_string().unwrap_or("").to_string(); if Platform::is_windows() - && let Some(m) = preg_match2(php_regex!(r"{^([^:/\\]++) }"), &command_str, 0) + && let Some(m) = preg_match(php_regex!(r"{^([^:/\\]++) }"), &command_str) { let m1 = m.get(1).unwrap_or_default().to_string(); command_str = substr_replace( @@ -832,18 +832,15 @@ impl ProcessExecutor { php_regex!(r"{://(?P[^:/\s]+):(?P[^@\s/]+)@}i"), |m: &PregMatches| -> anyhow::Result { // if the username looks like a long (12char+) hex string, or a modern github token (e.g. ghp_xxx, github_pat_xxx) we obfuscate that - if preg_match2( + if preg_match( GitHub::GITHUB_TOKEN_REGEX, m.name("user").unwrap_or_default(), - 0, ) .is_some() { return Ok("://***:***@".to_string()); } - if preg_match2(r"{^[a-f0-9]{12,}$}", m.name("user").unwrap_or_default(), 0) - .is_some() - { + if preg_match(r"{^[a-f0-9]{12,}$}", m.name("user").unwrap_or_default()).is_some() { return Ok("://***:***@".to_string()); } @@ -906,8 +903,7 @@ impl ProcessExecutor { -1, Some(&mut dquotes), ); - let meta = - dquotes > 0 || preg_match2(php_regex!(r"/%[^%]+%|![^!]+!/"), &argument, 0).is_some(); + let meta = dquotes > 0 || preg_match(php_regex!(r"/%[^%]+%|![^!]+!/"), &argument).is_some(); if !meta && !quote { quote = strpbrk(&argument, "^&|<>()").is_some(); -- cgit v1.3.1-4-g156e