gbranden pushed a commit to branch master
in repository groff.

commit fa7dad1c48ff90aacc7b0d36a015204fbea41e89
Author: G. Branden Robinson <[email protected]>
AuthorDate: Thu Jun 25 17:51:41 2026 -0500

    [libgroff]: Refactor `string::move()`.
    
    * src/libs/libgroff/string.cpp (string::move): Refactor to reduce heap
      manipulation and memory copying.
---
 ChangeLog                    |  5 +++++
 src/libs/libgroff/string.cpp | 10 ++++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 370081839..8a0d590fc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2026-06-26  G. Branden Robinson <[email protected]>
+
+       * src/libs/libgroff/string.cpp (string::move): Refactor to
+       reduce heap manipulation and memory copying.
+
 2026-06-26  G. Branden Robinson <[email protected]>
 
        * src/libs/libgroff/string.cpp (salloc, sfree_and_alloc)
diff --git a/src/libs/libgroff/string.cpp b/src/libs/libgroff/string.cpp
index db4e39cdb..67fc36205 100644
--- a/src/libs/libgroff/string.cpp
+++ b/src/libs/libgroff/string.cpp
@@ -213,9 +213,15 @@ string &string::operator=(char c)
 
 void string::move(string &s)
 {
-  sfree_and_alloc(ptr, sz, s.len, &sz);
-  memcpy(ptr, s.ptr, s.len);
+  char *ptr_tmp = ptr;
+  size_t len_tmp = len;
+  size_t sz_tmp = sz;
+  ptr = s.ptr;
   len = s.len;
+  sz = s.sz;
+  s.ptr = ptr_tmp;
+  s.len = len_tmp;
+  s.sz = sz_tmp;
   s.clear();
   assert(ptr != 0 /* nullptr */);
 }

_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to