diff options
Diffstat (limited to 'include/clang/Frontend/DocumentXML.h')
| -rw-r--r-- | include/clang/Frontend/DocumentXML.h | 16 | 
1 files changed, 14 insertions, 2 deletions
diff --git a/include/clang/Frontend/DocumentXML.h b/include/clang/Frontend/DocumentXML.h index 6693ddbac57d..73d892105f21 100644 --- a/include/clang/Frontend/DocumentXML.h +++ b/include/clang/Frontend/DocumentXML.h @@ -114,6 +114,7 @@ private:    void addPtrAttribute(const char* pName, const NamedDecl* D);    void addPtrAttribute(const char* pName, const DeclContext* D);    void addPtrAttribute(const char* pName, const NamespaceDecl* D);    // disambiguation +  void addPtrAttribute(const char* pName, const NestedNameSpecifier* N);    void addPtrAttribute(const char* pName, const LabelStmt* L);    void addPtrAttribute(const char* pName, const char* text); @@ -145,12 +146,23 @@ inline void DocumentXML::initialize(ASTContext &Context) {  //---------------------------------------------------------  template<class T>  inline void DocumentXML::addAttribute(const char* pName, const T& value) { -  Out << ' ' << pName << "=\"" << value << "\""; +  std::string repr; +  { +    llvm::raw_string_ostream buf(repr); +    buf << value; +    buf.flush(); +  } +   +  Out << ' ' << pName << "=\""  +      << DocumentXML::escapeString(repr.c_str(), repr.size()) +      << "\"";  }  //---------------------------------------------------------  inline void DocumentXML::addPtrAttribute(const char* pName, const char* text) { -  Out << ' ' << pName << "=\"" << text << "\""; +  Out << ' ' << pName << "=\""  +      << DocumentXML::escapeString(text, strlen(text)) +      << "\"";  }  //---------------------------------------------------------  | 
