Author: [email protected]
Date: Mon Jun 15 08:49:03 2009
New Revision: 2172

Modified:
    branches/bleeding_edge/src/log-utils.cc
    branches/bleeding_edge/src/log-utils.h
    branches/bleeding_edge/src/log.cc

Log:
Fixed pointer vs. va_list overloading problem occuring in gcc 3.3 (used for  
ARM build).

It seems that when calling a method that has two overloaded versions like  
this:
   f(char* format, ...)
   f(char* format, va_list args)
with a second pointer argument: f("format", pointer), the second version is  
picked up.

I've found a description of a similar issue here:  
http://bugs.gentoo.org/63112

So, to resolve this ambiguity, I've named such LogMessageBuilder's Append  
functions differently.

Review URL: http://codereview.chromium.org/125125


Modified: branches/bleeding_edge/src/log-utils.cc
==============================================================================
--- branches/bleeding_edge/src/log-utils.cc     (original)
+++ branches/bleeding_edge/src/log-utils.cc     Mon Jun 15 08:49:03 2009
@@ -215,13 +215,13 @@
                     Log::kMessageBufferSize - pos_);
    va_list args;
    va_start(args, format);
-  Append(format, args);
+  AppendVA(format, args);
    va_end(args);
    ASSERT(pos_ <= Log::kMessageBufferSize);
  }


-void LogMessageBuilder::Append(const char* format, va_list args) {
+void LogMessageBuilder::AppendVA(const char* format, va_list args) {
    Vector<char> buf(Log::message_buffer_ + pos_,
                     Log::kMessageBufferSize - pos_);
    int result = v8::internal::OS::VSNPrintF(buf, format, args);

Modified: branches/bleeding_edge/src/log-utils.h
==============================================================================
--- branches/bleeding_edge/src/log-utils.h      (original)
+++ branches/bleeding_edge/src/log-utils.h      Mon Jun 15 08:49:03 2009
@@ -230,7 +230,7 @@
    void Append(const char* format, ...);

    // Append string data to the log message.
-  void Append(const char* format, va_list args);
+  void AppendVA(const char* format, va_list args);

    // Append a character to the log message.
    void Append(const char c);

Modified: branches/bleeding_edge/src/log.cc
==============================================================================
--- branches/bleeding_edge/src/log.cc   (original)
+++ branches/bleeding_edge/src/log.cc   Mon Jun 15 08:49:03 2009
@@ -402,7 +402,7 @@
    LogMessageBuilder msg;
    va_list ap;
    va_start(ap, format);
-  msg.Append(format, ap);
+  msg.AppendVA(format, ap);
    va_end(ap);
    msg.WriteToLogFile();
  }

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to