View Single Post
  #4  
Old 05-27-2009, 02:18 PM
ndnet
Hill Giant
 
Join Date: Oct 2003
Posts: 105
Default

That's gotten zone to boot and supporting players (at least one) so far. Thanks so much.

For future reference, the link posted above contains a diff of common/MiscFunctions.cpp and common/debug.cpp, copied below:

Code:
Code:
diff -up EQEmuServer/common/MiscFunctions.cpp.orig EQEmuServer/common/MiscFunctions.cpp 
--- EQEmuServer/common/MiscFunctions.cpp.orig   2009-04-19 18:48:46.000000000 -0700
+++ EQEmuServer/common/MiscFunctions.cpp        2009-04-19 18:49:59.000000000 -0700
@@ -148,7 +148,6 @@ int MakeAnyLenString(char** ret, const c 
        int buf_len = 128; 
     int chars = -1; 
        va_list argptr; 
-       va_start(argptr, format); 
        while (chars == -1 || chars >= buf_len) { 
                safe_delete_array(*ret); 
                if (chars == -1) 
@@ -156,9 +155,10 @@ int MakeAnyLenString(char** ret, const c 
                else 
                        buf_len = chars + 1; 
                *ret = new char[buf_len]; 
+               va_start(argptr, format); 
                chars = vsnprintf(*ret, buf_len, format, argptr); 
+               va_end(argptr); 
        } 
-       va_end(argptr); 
        return chars; 
 } 
  
@@ -170,7 +170,6 @@ int32 AppendAnyLenString(char** ret, int 
     int chars = -1; 
        char* oldret = 0; 
        va_list argptr; 
-       va_start(argptr, format); 
        while (chars == -1 || chars >= (sint32)(*bufsize-*strlen)) { 
                if (chars == -1) 
                        *bufsize += 256; 
@@ -183,7 +182,9 @@ int32 AppendAnyLenString(char** ret, int 
                                memcpy(*ret, oldret, *strlen); 
                        safe_delete_array(oldret); 
                } 
+               va_start(argptr, format); 
                chars = vsnprintf(&(*ret)[*strlen], (*bufsize-*strlen), format, argptr); 
+               va_end(argptr); 
        } 
        va_end(argptr); 
        *strlen += chars; 
diff -up EQEmuServer/common/debug.cpp.orig EQEmuServer/common/debug.cpp 
--- EQEmuServer/common/debug.cpp.orig   2009-04-19 18:48:46.000000000 -0700 
+++ EQEmuServer/common/debug.cpp        2009-04-19 18:49:59.000000000 -0700 
@@ -144,11 +144,16 @@ bool EQEMuLog::write(LogIDs id, const ch 
  
        va_list argptr; 
        va_start(argptr, fmt); 
-    if (dofile) 
+    if (dofile) { 
                vfprintf( fp[id], fmt, argptr ); 
+               va_end(argptr); 
+               va_start(argptr, fmt); 
+       } 
        if(logCallbackFmt[id]) { 
                msgCallbackFmt p = logCallbackFmt[id]; 
                p(id, fmt, argptr ); 
+               va_end(argptr); 
+               va_start(argptr, fmt); 
        } 
     if (pLogStatus[id] & 2) { 
                if (pLogStatus[id] & 8) { 
@@ -202,17 +207,21 @@ bool EQEMuLog::writePVA(LogIDs id, const 
     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 
-               vfprintf( fp[id], fmt, argptr ); 
+               va_copy(tmpargptr, argptr); 
+               vfprintf( fp[id], fmt, tmpargptr ); 
     } 
        if(logCallbackPva[id]) { 
                msgCallbackPva p = logCallbackPva[id]; 
-               p(id, prefix, fmt, argptr ); 
+               va_copy(tmpargptr, argptr); 
+               p(id, prefix, fmt, tmpargptr ); 
        } 
     if (pLogStatus[id] & 2) { 
                if (pLogStatus[id] & 8) { 
@@ -295,8 +304,11 @@ bool EQEMuLog::writebuf(LogIDs id, const 
 bool EQEMuLog::writeNTS(LogIDs id, bool dofile, const char *fmt, ...) { 
        va_list argptr; 
        va_start(argptr, fmt); 
-       if (dofile) 
+       if (dofile) { 
                vfprintf( fp[id], fmt, argptr ); 
+               va_end(argptr); 
+               va_start(argptr, fmt); 
+       } 
     if (pLogStatus[id] & 2) { 
                if (pLogStatus[id] & 8) 
                        vfprintf( stderr, fmt, argptr );
Thanks gaeorn for posting your fix.

Continuing on...
Reply With Quote