diff --git a/lib/Analysis/ArrayBoundChecker.cpp b/lib/Analysis/ArrayBoundChecker.cpp
index 34a5631..549a22b 100644
--- a/lib/Analysis/ArrayBoundChecker.cpp
+++ b/lib/Analysis/ArrayBoundChecker.cpp
@@ -77,7 +77,7 @@
 
     // Generate a report for this bug.
     RangedBugReport *report = 
-      new RangedBugReport(*BT, BT->getDescription().c_str(), N);
+      new RangedBugReport(*BT, BT->getDescription(), N);
 
     report->addRange(S->getSourceRange());
 
diff --git a/lib/Analysis/BadCallChecker.cpp b/lib/Analysis/BadCallChecker.cpp
index 4175e8d..7a7ea18 100644
--- a/lib/Analysis/BadCallChecker.cpp
+++ b/lib/Analysis/BadCallChecker.cpp
@@ -46,7 +46,7 @@
                 "Called function pointer is a null or undefined pointer value");
 
       EnhancedBugReport *R =
-        new EnhancedBugReport(*BT, BT->getDescription().c_str(), N);
+        new EnhancedBugReport(*BT, BT->getDescription(), N);
         
       R->addVisitorCreator(bugreporter::registerTrackNullOrUndefValue,
                            bugreporter::GetCalleeExpr(N));
diff --git a/lib/Analysis/CallGraph.cpp b/lib/Analysis/CallGraph.cpp
index 17dc068..06e3317 100644
--- a/lib/Analysis/CallGraph.cpp
+++ b/lib/Analysis/CallGraph.cpp
@@ -117,7 +117,7 @@
          << " calls:\n";
       for (CallGraphNode::iterator CI = I->second->begin(),
              CE = I->second->end(); CI != CE; ++CI) {
-        os << "    " << CI->second->getName().c_str();
+        os << "    " << CI->second->getName();
       }
       os << '\n';
     }
diff --git a/lib/Analysis/CastToStructChecker.cpp b/lib/Analysis/CastToStructChecker.cpp
index bda8ff4..ccd4a33 100644
--- a/lib/Analysis/CastToStructChecker.cpp
+++ b/lib/Analysis/CastToStructChecker.cpp
@@ -65,8 +65,7 @@
                             "Casting a non-structure type to a structure type "
                             "and accessing a field can lead to memory access "
                             "errors or data corruption.");
-      RangedBugReport *R = new RangedBugReport(*BT,BT->getDescription().c_str(),
-                                               N);
+      RangedBugReport *R = new RangedBugReport(*BT,BT->getDescription(), N);
       R->addRange(CE->getSourceRange());
       C.EmitReport(R);
     }
diff --git a/lib/Analysis/DereferenceChecker.cpp b/lib/Analysis/DereferenceChecker.cpp
index 6fdad5d..c3aa8f3 100644
--- a/lib/Analysis/DereferenceChecker.cpp
+++ b/lib/Analysis/DereferenceChecker.cpp
@@ -62,7 +62,7 @@
         BT_undef = new BuiltinBug("Dereference of undefined pointer value");
       
       EnhancedBugReport *report =
-        new EnhancedBugReport(*BT_undef, BT_undef->getDescription().c_str(), N);
+        new EnhancedBugReport(*BT_undef, BT_undef->getDescription(), N);
       report->addVisitorCreator(bugreporter::registerTrackNullOrUndefValue,
                                 bugreporter::GetDerefExpr(N));
       C.EmitReport(report);
@@ -93,7 +93,7 @@
                                    "Dereference of null pointer");
 
         EnhancedBugReport *report =
-          new EnhancedBugReport(*BT_null, BT_null->getDescription().c_str(), N);
+          new EnhancedBugReport(*BT_null, BT_null->getDescription(), N);
         report->addVisitorCreator(bugreporter::registerTrackNullOrUndefValue,
                                   bugreporter::GetDerefExpr(N));
         
diff --git a/lib/Analysis/DivZeroChecker.cpp b/lib/Analysis/DivZeroChecker.cpp
index 5f949fd..a8630f1 100644
--- a/lib/Analysis/DivZeroChecker.cpp
+++ b/lib/Analysis/DivZeroChecker.cpp
@@ -68,7 +68,7 @@
         BT = new BuiltinBug("Division by zero");
 
       EnhancedBugReport *R = 
-        new EnhancedBugReport(*BT, BT->getDescription().c_str(), N);
+        new EnhancedBugReport(*BT, BT->getDescription(), N);
 
       R->addVisitorCreator(bugreporter::registerTrackNullOrUndefValue,
                            bugreporter::GetDenomExpr(N));
diff --git a/lib/Analysis/FixedAddressChecker.cpp b/lib/Analysis/FixedAddressChecker.cpp
index e30e3d0..80096dc 100644
--- a/lib/Analysis/FixedAddressChecker.cpp
+++ b/lib/Analysis/FixedAddressChecker.cpp
@@ -59,8 +59,7 @@
                           "Using a fixed address is not portable because that "
                           "address will probably not be valid in all "
                           "environments or platforms.");
-    RangedBugReport *R = new RangedBugReport(*BT, BT->getDescription().c_str(),
-                                             N);
+    RangedBugReport *R = new RangedBugReport(*BT, BT->getDescription(), N);
     R->addRange(B->getRHS()->getSourceRange());
     C.EmitReport(R);
   }
diff --git a/lib/Analysis/MallocChecker.cpp b/lib/Analysis/MallocChecker.cpp
index 6655194..6129358 100644
--- a/lib/Analysis/MallocChecker.cpp
+++ b/lib/Analysis/MallocChecker.cpp
@@ -123,7 +123,7 @@
                          "Try to free a memory block that has been released");
       // FIXME: should find where it's freed last time.
       BugReport *R = new BugReport(*BT_DoubleFree, 
-                                   BT_DoubleFree->getDescription().c_str(), N);
+                                   BT_DoubleFree->getDescription(), N);
       C.EmitReport(R);
     }
     return;
@@ -152,7 +152,7 @@
                      "Allocated memory never released. Potential memory leak.");
         // FIXME: where it is allocated.
         BugReport *R = new BugReport(*BT_Leak,
-                                     BT_Leak->getDescription().c_str(), N);
+                                     BT_Leak->getDescription(), N);
         C.EmitReport(R);
       }
     }
diff --git a/lib/Analysis/PointerArithChecker.cpp b/lib/Analysis/PointerArithChecker.cpp
index 5f5badb..9382348 100644
--- a/lib/Analysis/PointerArithChecker.cpp
+++ b/lib/Analysis/PointerArithChecker.cpp
@@ -59,8 +59,7 @@
                             "Pointer arithmetic done on non-array variables "
                             "means reliance on memory layout, which is "
                             "dangerous.");
-      RangedBugReport *R = new RangedBugReport(*BT,BT->getDescription().c_str(),
-                                               N);
+      RangedBugReport *R = new RangedBugReport(*BT, BT->getDescription(), N);
       R->addRange(B->getSourceRange());
       C.EmitReport(R);
     }
diff --git a/lib/Analysis/PointerSubChecker.cpp b/lib/Analysis/PointerSubChecker.cpp
index 20279c6..4c7906f 100644
--- a/lib/Analysis/PointerSubChecker.cpp
+++ b/lib/Analysis/PointerSubChecker.cpp
@@ -66,8 +66,7 @@
       BT = new BuiltinBug("Pointer subtraction", 
                           "Subtraction of two pointers that do not point to "
                           "the same memory chunk may cause incorrect result.");
-    RangedBugReport *R = new RangedBugReport(*BT, BT->getDescription().c_str(),
-                                             N);
+    RangedBugReport *R = new RangedBugReport(*BT, BT->getDescription(), N);
     R->addRange(B->getSourceRange());
     C.EmitReport(R);
   }
diff --git a/lib/Analysis/ReturnPointerRangeChecker.cpp b/lib/Analysis/ReturnPointerRangeChecker.cpp
index f007d0e..44887b2 100644
--- a/lib/Analysis/ReturnPointerRangeChecker.cpp
+++ b/lib/Analysis/ReturnPointerRangeChecker.cpp
@@ -88,7 +88,7 @@
 
     // Generate a report for this bug.
     RangedBugReport *report = 
-      new RangedBugReport(*BT, BT->getDescription().c_str(), N);
+      new RangedBugReport(*BT, BT->getDescription(), N);
 
     report->addRange(RetE->getSourceRange());
 
diff --git a/lib/Analysis/ReturnStackAddressChecker.cpp b/lib/Analysis/ReturnStackAddressChecker.cpp
index 9f22b3c..e4be871 100644
--- a/lib/Analysis/ReturnStackAddressChecker.cpp
+++ b/lib/Analysis/ReturnStackAddressChecker.cpp
@@ -88,7 +88,7 @@
         << R->getString() << "' returned.";
   }
 
-  RangedBugReport *report = new RangedBugReport(*BT, os.str().data(), N);
+  RangedBugReport *report = new RangedBugReport(*BT, os.str(), N);
   report->addRange(RS->getSourceRange());
   if (range.isValid())
     report->addRange(range);
diff --git a/lib/Analysis/ReturnUndefChecker.cpp b/lib/Analysis/ReturnUndefChecker.cpp
index adde3f5..796c760 100644
--- a/lib/Analysis/ReturnUndefChecker.cpp
+++ b/lib/Analysis/ReturnUndefChecker.cpp
@@ -60,7 +60,7 @@
                         "Undefined or garbage value returned to caller");
     
   EnhancedBugReport *report = 
-    new EnhancedBugReport(*BT, BT->getDescription().c_str(), N);  
+    new EnhancedBugReport(*BT, BT->getDescription(), N);
 
   report->addVisitorCreator(bugreporter::registerTrackNullOrUndefValue, RetE);
 
diff --git a/lib/Analysis/UndefinedArgChecker.cpp b/lib/Analysis/UndefinedArgChecker.cpp
index 43b4847..923a7e1 100644
--- a/lib/Analysis/UndefinedArgChecker.cpp
+++ b/lib/Analysis/UndefinedArgChecker.cpp
@@ -46,8 +46,7 @@
           BT = new BuiltinBug("Pass-by-value argument in function call is "
                               "undefined");
         // Generate a report for this bug.
-        EnhancedBugReport *R = new EnhancedBugReport(*BT, BT->getName().c_str(),
-                                                     N);
+        EnhancedBugReport *R = new EnhancedBugReport(*BT, BT->getName(), N);
         R->addRange((*I)->getSourceRange());
         R->addVisitorCreator(bugreporter::registerTrackNullOrUndefValue, *I);
         C.EmitReport(R);
diff --git a/lib/Analysis/UndefinedArraySubscriptChecker.cpp b/lib/Analysis/UndefinedArraySubscriptChecker.cpp
index 47d615d..887c775 100644
--- a/lib/Analysis/UndefinedArraySubscriptChecker.cpp
+++ b/lib/Analysis/UndefinedArraySubscriptChecker.cpp
@@ -46,8 +46,7 @@
         BT = new BuiltinBug("Array subscript is undefined");
 
       // Generate a report for this bug.
-      EnhancedBugReport *R = new EnhancedBugReport(*BT, BT->getName().c_str(),
-                                                   N);
+      EnhancedBugReport *R = new EnhancedBugReport(*BT, BT->getName(), N);
       R->addRange(A->getIdx()->getSourceRange());
       R->addVisitorCreator(bugreporter::registerTrackNullOrUndefValue, 
                            A->getIdx());
diff --git a/lib/Analysis/UndefinedAssignmentChecker.cpp b/lib/Analysis/UndefinedAssignmentChecker.cpp
index 26f9ee3..b8062f3 100644
--- a/lib/Analysis/UndefinedAssignmentChecker.cpp
+++ b/lib/Analysis/UndefinedAssignmentChecker.cpp
@@ -39,7 +39,7 @@
     BT = new BuiltinBug("Assigned value is garbage or undefined");
 
   // Generate a report for this bug.
-  EnhancedBugReport *R = new EnhancedBugReport(*BT, BT->getName().c_str(), N);
+  EnhancedBugReport *R = new EnhancedBugReport(*BT, BT->getName(), N);
 
   if (AssignE) {
     const Expr *ex = 0;
diff --git a/lib/Analysis/VLASizeChecker.cpp b/lib/Analysis/VLASizeChecker.cpp
index 5cb700e..799a73e 100644
--- a/lib/Analysis/VLASizeChecker.cpp
+++ b/lib/Analysis/VLASizeChecker.cpp
@@ -64,7 +64,7 @@
                                 "garbage value as its size");
 
     EnhancedBugReport *report =
-      new EnhancedBugReport(*BT_undef, BT_undef->getName().c_str(), N);
+      new EnhancedBugReport(*BT_undef, BT_undef->getName(), N);
     report->addRange(SE->getSourceRange());
     report->addVisitorCreator(bugreporter::registerTrackNullOrUndefValue, SE);
     C.EmitReport(report);
@@ -84,7 +84,7 @@
                                "size");
 
     EnhancedBugReport *report =
-      new EnhancedBugReport(*BT_zero, BT_zero->getName().c_str(), N);
+      new EnhancedBugReport(*BT_zero, BT_zero->getName(), N);
     report->addRange(SE->getSourceRange());
     report->addVisitorCreator(bugreporter::registerTrackNullOrUndefValue, SE);
     C.EmitReport(report);
