Thread: Rev706
View Single Post
  #3  
Old 06-23-2009, 11:52 AM
gaeorn
Developer
 
Join Date: Apr 2009
Location: USA
Posts: 478
Default

Actually, looking through the changes, I'm guessing the problem is in one particular portion of the changes. This patch removes those changes. Please apply this patch, recompile and then let us know if the zone.exe crash still occurs. Thanks.

Code:
Index: common/MiscFunctions.cpp
===================================================================
--- common/MiscFunctions.cpp    (revision 706)
+++ common/MiscFunctions.cpp    (revision 705)
@@ -59,10 +59,6 @@
        #include <errno.h>
 #endif
 
-#ifndef va_copy
-       #define va_copy(d,s) ((d) = (s))
-#endif
-
 void CoutTimestamp(bool ms) {
        time_t rawtime;
        struct tm* gmt_t;
@@ -151,7 +147,7 @@
 int MakeAnyLenString(char** ret, const char* format, ...) {
        int buf_len = 128;
     int chars = -1;
-       va_list argptr, tmpargptr;
+       va_list argptr;
        va_start(argptr, format);
        while (chars == -1 || chars >= buf_len) {
                safe_delete_array(*ret);
@@ -160,8 +156,7 @@
                else
                        buf_len = chars + 1;
                *ret = new char[buf_len];
-               va_copy(tmpargptr, argptr);
-               chars = vsnprintf(*ret, buf_len, format, tmpargptr);
+               chars = vsnprintf(*ret, buf_len, format, argptr);
        }
        va_end(argptr);
        return chars;
@@ -174,7 +169,7 @@
                *strlen = 0;
     int chars = -1;
        char* oldret = 0;
-       va_list argptr, tmpargptr;
+       va_list argptr;
        va_start(argptr, format);
        while (chars == -1 || chars >= (sint32)(*bufsize-*strlen)) {
                if (chars == -1)
@@ -188,8 +183,7 @@
                                memcpy(*ret, oldret, *strlen);
                        safe_delete_array(oldret);
                }
-               va_copy(tmpargptr, argptr);
-               chars = vsnprintf(&(*ret)[*strlen], (*bufsize-*strlen), format, tmpargptr);
+               chars = vsnprintf(&(*ret)[*strlen], (*bufsize-*strlen), format, argptr);
        }
        va_end(argptr);
        *strlen += chars;
Index: common/debug.cpp
===================================================================
--- common/debug.cpp    (revision 706)
+++ common/debug.cpp    (revision 705)
@@ -20,10 +20,6 @@
 #endif
 #include "../common/MiscFunctions.h"
 
-#ifndef va_copy
-       #define va_copy(d,s) ((d) = (s))
-#endif
-
 static volatile bool logFileValid = false;
 static EQEMuLog realLogFile;
 EQEMuLog *LogFile = &realLogFile;
@@ -148,16 +144,13 @@
                fprintf(fp[id], "%04i [%02d.%02d. - %02d:%02d:%02d] ", getpid(), newtime->tm_mon+1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
 #endif
 
-       va_list argptr, tmpargptr;
+       va_list argptr;
        va_start(argptr, fmt);
-       if (dofile) {
-               va_copy(tmpargptr, argptr);
-               vfprintf( fp[id], fmt, tmpargptr );
-       }
+    if (dofile)
+               vfprintf( fp[id], fmt, argptr );
        if(logCallbackFmt[id]) {
                msgCallbackFmt p = logCallbackFmt[id];
-               va_copy(tmpargptr, argptr);
-               p(id, fmt, tmpargptr );
+               p(id, fmt, argptr );
        }
     if (pLogStatus[id] & 2) {
                if (pLogStatus[id] & 8) {
@@ -211,21 +204,17 @@
     time( &aclock );                 /* Get time in seconds */
     newtime = localtime( &aclock );  /* Convert time to struct */
 
-       va_list tmpargptr;
-
     if (dofile) {
 #ifndef NO_PIDLOG
                fprintf(fp[id], "[%02d.%02d. - %02d:%02d:%02d] %s", newtime->tm_mon+1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec, prefix);
 #else
                fprintf(fp[id], "%04i [%02d.%02d. - %02d:%02d:%02d] %s", getpid(), newtime->tm_mon+1, newtime->tm_mday, newtime->tm_hour, newtime->tm_min, newtime->tm_sec, prefix);
 #endif
-               va_copy(tmpargptr, argptr);
-               vfprintf( fp[id], fmt, tmpargptr );
+               vfprintf( fp[id], fmt, argptr );
     }
        if(logCallbackPva[id]) {
                msgCallbackPva p = logCallbackPva[id];
-               va_copy(tmpargptr, argptr);
-               p(id, prefix, fmt, tmpargptr );
+               p(id, prefix, fmt, argptr );
        }
     if (pLogStatus[id] & 2) {
                if (pLogStatus[id] & 8) {
@@ -306,12 +295,10 @@
 }
 
 bool EQEMuLog::writeNTS(LogIDs id, bool dofile, const char *fmt, ...) {
-       va_list argptr, tmpargptr;
+       va_list argptr;
        va_start(argptr, fmt);
-       if (dofile) {
-               va_copy(tmpargptr, argptr);
-               vfprintf( fp[id], fmt, tmpargptr );
-       }
+       if (dofile)
+               vfprintf( fp[id], fmt, argptr );
     if (pLogStatus[id] & 2) {
                if (pLogStatus[id] & 8)
                        vfprintf( stderr, fmt, argptr );
Reply With Quote