[llvm-commits] [dragonegg] r172176 - /dragonegg/trunk/src/Backend.cpp

Benjamin Kramer benny.kra at gmail.com
Fri Jan 11 03:33:30 PST 2013


On 11.01.2013, at 07:00, Duncan Sands <baldrick at free.fr> wrote:

> Author: baldrick
> Date: Thu Jan 10 23:58:20 2013
> New Revision: 172176
>
> URL: http://llvm.org/viewvc/llvm-project?rev=172176&view=rev
> Log:
> The getMessage method of SMDiagnostic has been changed to return a StringRef
> rather than a std::string.
>
> Modified:
>    dragonegg/trunk/src/Backend.cpp
>
> Modified: dragonegg/trunk/src/Backend.cpp
> URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/Backend.cpp?rev=172176&r1=172175&r2=172176&view=diff
> ==============================================================================
> --- dragonegg/trunk/src/Backend.cpp (original)
> +++ dragonegg/trunk/src/Backend.cpp Thu Jan 10 23:58:20 2013
> @@ -1795,7 +1795,7 @@
>
> static void InlineAsmDiagnosticHandler(const SMDiagnostic &D, void * /*Data*/,
>                                        location_t loc) {
> -  const char *Message = D.getMessage().c_str();
> +  const char *Message = D.getMessage().str().c_str();

This is a dangling pointer, str() creates a std::string temporary
that's destroyed immediately. You can work around it by storing the
std::string in a local variable.

- Ben

>   switch (D.getKind()) {
>   case SourceMgr::DK_Error:
>     error_at(loc, "%s", Message);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list