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 );
Continuing on...