Index: uspace/lib/cpp/include/impl/string.hpp
===================================================================
--- uspace/lib/cpp/include/impl/string.hpp	(revision 2d302d60f1ff6842a33f985cf08816817ba48f50)
+++ uspace/lib/cpp/include/impl/string.hpp	(revision ed81b1f2184cf34caa55d13086af4d9139a2fc1b)
@@ -331,5 +331,5 @@
                 : data_{}, size_{}, capacity_{}, allocator_{alloc}
             {
-                init_(str, traits_type::length(str) + 1);
+                init_(str, traits_type::length(str));
             }
 
@@ -361,5 +361,5 @@
                 {
                     auto len = static_cast<size_type>(last - first);
-                    init_(static_cast<value_type*>(first), len);
+                    init_(first, len);
                 }
             }
@@ -501,5 +501,5 @@
             size_type length() const noexcept
             {
-                return size_;
+                return size();
             }
 
@@ -652,6 +652,6 @@
                 // TODO: if (size_ + n > max_size()) throw length_error
                 ensure_free_space_(n);
-                traits_type::copy(data_ + size_ - 1, str, n);
-                size_ += n - 1; // We are not copying str's null terminator.
+                traits_type::copy(data_ + size(), str, n);
+                size_ += n;
                 ensure_null_terminator_();
 
@@ -661,5 +661,5 @@
             basic_string& append(const value_type* str)
             {
-                return append(str, traits_type::length(str) + 1);
+                return append(str, traits_type::length(str));
             }
 
@@ -769,5 +769,4 @@
 
                 copy_backward_(begin() + pos, end(), end() + n);
-                std::printf("|%s|\n", data_);
                 copy_(str, str + n, begin() + pos);
                 size_ += n;
Index: uspace/lib/cpp/src/internal/test/string.cpp
===================================================================
--- uspace/lib/cpp/src/internal/test/string.cpp	(revision 2d302d60f1ff6842a33f985cf08816817ba48f50)
+++ uspace/lib/cpp/src/internal/test/string.cpp	(revision ed81b1f2184cf34caa55d13086af4d9139a2fc1b)
@@ -55,10 +55,10 @@
         test_eq(
             "size of string",
-            str1.size(), 6ul
+            str1.size(), 5ul
         );
         test_eq(
             "initialization from a cstring literal",
             str1.begin(), str1.end(),
-            check1, check1 + 6
+            check1, check1 + 5
         );
 
@@ -140,5 +140,5 @@
 
         std::string str5{"hello, "};
-        str5.append({'w', 'o', 'r', 'l', 'd', '\0'});
+        str5.append({'w', 'o', 'r', 'l', 'd'});
         test_eq(
             "append initializer list",
@@ -187,5 +187,5 @@
         std::string insertee{"ello"};
         str4.insert(str4.begin() + 1, insertee.begin(),
-                    insertee.end() - 1);
+                    insertee.end());
         test_eq(
             "insert iterator range",
@@ -193,5 +193,13 @@
             check.begin(), check.end()
         );
-        /* std::printf("|%s|\n", str4.c_str()); */
+
+        std::string str5{"hel, world"};
+        std::initializer_list<char> init{'l', 'o'};
+        str5.insert(str5.begin() + 3, init);
+        test_eq(
+            "insert initializer list",
+            str5.begin(), str5.end(),
+            check.begin(), check.end()
+        );
     }
 }
