diff --git a/preprocessor/macro/MacroValue.cc b/preprocessor/macro/MacroValue.cc
index 65b3fc39ddb80de222b28a007fdefd329f4df971..3dfab32331afdf9c654f44acb364443584ec6438 100644
--- a/preprocessor/macro/MacroValue.cc
+++ b/preprocessor/macro/MacroValue.cc
@@ -387,7 +387,7 @@ StringMV::operator[](const MacroValue &mv) const throw (TypeError, OutOfBoundsEr
       if (*it < 1 || *it > (int) value.length())
         throw OutOfBoundsError();
       char c = value.at(*it - 1);
-      result.append(&c);
+      result.append(1, c);
     }
   return new StringMV(driver, result);
 }