You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by ca...@apache.org on 2008/01/10 07:26:07 UTC

svn commit: r610690 - in /logging/log4cxx/trunk/src/main/cpp: gzcompressaction.cpp nteventlogappender.cpp writerappender.cpp zipcompressaction.cpp

Author: carnold
Date: Wed Jan  9 22:26:04 2008
New Revision: 610690

URL: http://svn.apache.org/viewvc?rev=610690&view=rev
Log:
LOGCXX-200: filename.c_str() invalidated before exec on VC 2008

Modified:
    logging/log4cxx/trunk/src/main/cpp/gzcompressaction.cpp
    logging/log4cxx/trunk/src/main/cpp/nteventlogappender.cpp
    logging/log4cxx/trunk/src/main/cpp/writerappender.cpp
    logging/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp

Modified: logging/log4cxx/trunk/src/main/cpp/gzcompressaction.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/gzcompressaction.cpp?rev=610690&r1=610689&r2=610690&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/gzcompressaction.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/gzcompressaction.cpp Wed Jan  9 22:26:04 2008
@@ -17,6 +17,7 @@
 
 #include <log4cxx/rolling/gzcompressaction.h>
 #include <apr_thread_proc.h>
+#include <apr_strings.h>
 #include <log4cxx/helpers/exception.h>
 
 using namespace log4cxx;
@@ -71,7 +72,7 @@
         int i = 0;
         args[i++] = "gzip";
         args[i++] = "-c";
-        args[i++] = source.getOSName().c_str();
+        args[i++] = apr_pstrdup(pool, source.getOSName().c_str());
         args[i++] = NULL;
     
 

Modified: logging/log4cxx/trunk/src/main/cpp/nteventlogappender.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/nteventlogappender.cpp?rev=610690&r1=610689&r2=610690&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/nteventlogappender.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/nteventlogappender.cpp Wed Jan  9 22:26:04 2008
@@ -26,6 +26,7 @@
 #include <log4cxx/helpers/stringhelper.h>
 #include <log4cxx/helpers/transcoder.h>
 #include <log4cxx/helpers/pool.h>
+#include <apr_strings.h>
 
 using namespace log4cxx;
 using namespace log4cxx::spi;
@@ -199,8 +200,10 @@
         layout->format(oss, event, p);
 #if LOG4CXX_WCHAR_T_API
         LOG4CXX_ENCODE_WCHAR(s, oss);
-        const wchar_t* msgs[1];
-        msgs[0] = s.c_str() ;
+        wchar_t* msgs = (wchar_t*) 
+			apr_palloc((apr_pool_t*) p.getAPRPool(), (s.length() + 1) * sizeof(wchar_t));
+		memcpy(msgs, s.data(), s.length() * sizeof(wchar_t));
+		msgs[s.length()] = 0;
         BOOL bSuccess = ::ReportEventW(
                 hEventLog,
                 getEventType(event),
@@ -209,12 +212,11 @@
                 pCurrentUserSID,
                 1,
                 0,
-                msgs,
+                (LPCWSTR*) &msgs,
                 NULL);
 #else
         LOG4CXX_ENCODE_CHAR(s, oss);
-        const char* msgs[1];
-        msgs[0] = s.c_str() ;
+        const char* msgs = apr_pstrdup((apr_pool_t*) pool.getAPRPool(), s.c_str());
         BOOL bSuccess = ::ReportEventA(
                 hEventLog,
                 getEventType(event),
@@ -223,7 +225,7 @@
                 pCurrentUserSID,
                 1,
                 0,
-                msgs,
+                &msgs,
                 NULL);
 #endif
 

Modified: logging/log4cxx/trunk/src/main/cpp/writerappender.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/writerappender.cpp?rev=610690&r1=610689&r2=610690&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/writerappender.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/writerappender.cpp Wed Jan  9 22:26:04 2008
@@ -208,10 +208,12 @@
         layout->format(msg, event, p);
         {
            synchronized sync(mutex);
-           writer->write(msg, p);
-           if (immediateFlush) {
-	        writer->flush(p);
-           }
+		   if (writer != NULL) {
+			  writer->write(msg, p);
+              if (immediateFlush) {
+	            writer->flush(p);
+              }
+		   }
         }
 }
 

Modified: logging/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp?rev=610690&r1=610689&r2=610690&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/zipcompressaction.cpp Wed Jan  9 22:26:04 2008
@@ -17,6 +17,7 @@
 
 #include <log4cxx/rolling/zipcompressaction.h>
 #include <apr_thread_proc.h>
+#include <apr_strings.h>
 #include <log4cxx/helpers/exception.h>
 
 using namespace log4cxx;
@@ -55,11 +56,12 @@
         if (stat != APR_SUCCESS) throw IOException(stat);
 
         const char** args = (const char**) 
-            apr_palloc(pool, 4 *sizeof(*args));
+            apr_palloc(pool, 5 *sizeof(*args));
         int i = 0;
         args[i++] = "zip";
-        args[i++] = destination.getOSName().c_str();
-        args[i++] = source.getOSName().c_str();
+		args[i++] = "-q";
+        args[i++] = apr_pstrdup(pool, destination.getOSName().c_str());
+        args[i++] = apr_pstrdup(pool, source.getOSName().c_str());
         args[i++] = NULL;
     
         if (destination.exists(p)) {