Skip to content

Commit

Permalink
Don't print debugging messages to stdout.
Browse files Browse the repository at this point in the history
There is some debugging code in cxa_demangle.cpp that prints messages on
stdout. In general this is not safe, as the program itself may use
stdout to write its output. Change this code to write to stderr.

Differential Revision:	http://reviews.llvm.org/D8167

llvm-svn: 232716
  • Loading branch information
EdSchouten committed Mar 19, 2015
1 parent aa27aad commit d0c480b
Showing 1 changed file with 18 additions and 18 deletions.
36 changes: 18 additions & 18 deletions libcxxabi/src/cxa_demangle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,51 +55,51 @@ template <class C>
void
print_stack(const C& db)
{
printf("---------\n");
printf("names:\n");
fprintf(stderr, "---------\n");
fprintf(stderr, "names:\n");
for (auto& s : db.names)
printf("{%s#%s}\n", s.first.c_str(), s.second.c_str());
fprintf(stderr, "{%s#%s}\n", s.first.c_str(), s.second.c_str());
int i = -1;
printf("subs:\n");
fprintf(stderr, "subs:\n");
for (auto& v : db.subs)
{
if (i >= 0)
printf("S%i_ = {", i);
fprintf(stderr, "S%i_ = {", i);
else
printf("S_ = {");
fprintf(stderr, "S_ = {");
for (auto& s : v)
printf("{%s#%s}", s.first.c_str(), s.second.c_str());
printf("}\n");
fprintf(stderr, "{%s#%s}", s.first.c_str(), s.second.c_str());
fprintf(stderr, "}\n");
++i;
}
printf("template_param:\n");
fprintf(stderr, "template_param:\n");
for (auto& t : db.template_param)
{
printf("--\n");
fprintf(stderr, "--\n");
i = -1;
for (auto& v : t)
{
if (i >= 0)
printf("T%i_ = {", i);
fprintf(stderr, "T%i_ = {", i);
else
printf("T_ = {");
fprintf(stderr, "T_ = {");
for (auto& s : v)
printf("{%s#%s}", s.first.c_str(), s.second.c_str());
printf("}\n");
fprintf(stderr, "{%s#%s}", s.first.c_str(), s.second.c_str());
fprintf(stderr, "}\n");
++i;
}
}
printf("---------\n\n");
fprintf(stderr, "---------\n\n");
}

template <class C>
void
print_state(const char* msg, const char* first, const char* last, const C& db)
{
printf("%s: ", msg);
fprintf(stderr, "%s: ", msg);
for (; first != last; ++first)
printf("%c", *first);
printf("\n");
fprintf(stderr, "%c", *first);
fprintf(stderr, "\n");
print_stack(db);
}

Expand Down

0 comments on commit d0c480b

Please sign in to comment.