Index: libcfa/src/collections/string.cfa
===================================================================
--- libcfa/src/collections/string.cfa	(revision 479fbe377d83fb9941a02a57b51b980995a449d1)
+++ libcfa/src/collections/string.cfa	(revision 38951c316de3e4ae1583d45726880474bcdeba7c)
@@ -236,22 +236,24 @@
 // Repetition
 
+void ?*=?(string & s, size_t factor) {
+    (*s.inner) *= factor;
+}
+
 string ?*?(const string & s, size_t factor) {
-    string ret = "";
-    for (factor) ret += s;
-    return ret;
-}
-
-void ?*=?(string & s, size_t factor) {
-    s = s * factor;
+    string ret = s;
+    ret *= factor;
+    return ret;
 }
 
 string ?*?(char c, size_t factor) {
     string ret = c;
-    return ret * factor;
+    ret *= factor;
+    return ret;
 }
 
 string ?*?(const char * s, size_t factor) {
     string ret = s;
-    return ret * factor;
+    ret *= factor;
+    return ret;
 }
 
Index: libcfa/src/collections/string_res.cfa
===================================================================
--- libcfa/src/collections/string_res.cfa	(revision 479fbe377d83fb9941a02a57b51b980995a449d1)
+++ libcfa/src/collections/string_res.cfa	(revision 38951c316de3e4ae1583d45726880474bcdeba7c)
@@ -642,4 +642,13 @@
 
 
+///////////////////////////////////////////////////////////////////
+// Repetition
+
+void ?*=?(string_res & s, size_t factor) {
+    string_res s2 = { s, COPY_VALUE, 0, size(s) };
+    s = "";
+    for (factor) s += s2;
+}
+
 //////////////////////////////////////////////////////////
 // Comparisons
Index: libcfa/src/collections/string_res.hfa
===================================================================
--- libcfa/src/collections/string_res.hfa	(revision 479fbe377d83fb9941a02a57b51b980995a449d1)
+++ libcfa/src/collections/string_res.hfa	(revision 38951c316de3e4ae1583d45726880474bcdeba7c)
@@ -136,4 +136,7 @@
 }
 
+// Repetition
+void ?*=?(string_res & s, size_t factor);
+
 // Character access
 void assignAt(const string_res & s, size_t index, char val);
