[Bf-blender-cvs] [174c3ffb4ad] blender-v3.2-release: Fix T98268: replace string node des not handle empty strings correctly

Jacques Lucke noreply at git.blender.org
Tue May 24 10:21:10 CEST 2022


Commit: 174c3ffb4adf29e0a7698aacf9468a820f448770
Author: Jacques Lucke
Date:   Tue May 24 10:21:02 2022 +0200
Branches: blender-v3.2-release
https://developer.blender.org/rB174c3ffb4adf29e0a7698aacf9468a820f448770

Fix T98268: replace string node des not handle empty strings correctly

Just use an existing function from blenlib instead of implementing a new version.

===================================================================

M	source/blender/nodes/function/nodes/node_fn_replace_string.cc

===================================================================

diff --git a/source/blender/nodes/function/nodes/node_fn_replace_string.cc b/source/blender/nodes/function/nodes/node_fn_replace_string.cc
index 6abcc79cf29..4b493438a45 100644
--- a/source/blender/nodes/function/nodes/node_fn_replace_string.cc
+++ b/source/blender/nodes/function/nodes/node_fn_replace_string.cc
@@ -15,19 +15,17 @@ static void fn_node_replace_string_declare(NodeDeclarationBuilder &b)
   b.add_output<decl::String>(N_("String"));
 }
 
-static std::string replace_all(std::string str, const std::string &from, const std::string &to)
+static std::string replace_all(const StringRefNull str,
+                               const StringRefNull from,
+                               const StringRefNull to)
 {
-  if (from.length() <= 0) {
+  if (from.is_empty()) {
     return str;
   }
-  const size_t step = to.length() > 0 ? to.length() : 1;
-
-  size_t offset = 0;
-  while ((offset = str.find(from, offset)) != std::string::npos) {
-    str.replace(offset, from.length(), to);
-    offset += step;
-  }
-  return str;
+  char *new_str_ptr = BLI_str_replaceN(str.c_str(), from.c_str(), to.c_str());
+  std::string new_str{new_str_ptr};
+  MEM_freeN(new_str_ptr);
+  return new_str;
 }
 
 static void fn_node_replace_string_build_multi_function(NodeMultiFunctionBuilder &builder)



More information about the Bf-blender-cvs mailing list