Xylo's construct_response fix

git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@188 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
mcmartin
2002-10-31 05:25:14 +00:00
parent 1d759fa140
commit a360e487bd
+65
View File
@@ -112,25 +112,90 @@ construct_response (UNICODE *buf, RESPONSE_REF R, ...)
UNICODE *name; UNICODE *name;
va_list vlist; va_list vlist;
// fprintf(stderr, "DEBUG: We've entered into construct_response!\n");
va_start (vlist, R); va_start (vlist, R);
// fprintf(stderr, "DEBUG: R = %d\n", R);
do do
{ {
COUNT len; COUNT len;
STRING S; STRING S;
// fprintf(stderr, "DEBUG: len = %d\n",len);
S = SetAbsStringTableIndex (CommData.ConversationPhrases, R - 1); S = SetAbsStringTableIndex (CommData.ConversationPhrases, R - 1);
// fprintf(stderr, "DEBUG: Returned from call to SetAbsStringTableIndex\n");
// fprintf(stderr, "DEBUG: GetStringAddress(S) = %s\n",(UNICODE *)GetStringAddress(S));
// fprintf(stderr, "DEBUG: buf = '%s' (%d) \n", buf, *buf);
// fprintf(stderr, "DEBUG: strlen(buf) = %d\n", strlen(buf));
wstrcpy (buf, (UNICODE *)GetStringAddress (S)); wstrcpy (buf, (UNICODE *)GetStringAddress (S));
// fprintf(stderr, "DEBUG: buf = '%s' (%d) \n", buf, *buf);
// fprintf(stderr, "DEBUG: strlen(buf) = %d\n", strlen(buf));
len = wstrlen (buf); len = wstrlen (buf);
// fprintf(stderr, "DEBUG: len = %d\n",len);
buf += len; buf += len;
// fprintf(stderr, "DEBUG: buf = '%s' (%d) \n", buf, *buf);
// fprintf(stderr, "DEBUG: strlen(buf) = %d\n", strlen(buf));
name = va_arg (vlist, UNICODE *); name = va_arg (vlist, UNICODE *);
// fprintf(stderr, "DEBUG: returned from va_arg call\n");
// fprintf(stderr, "DEBUG: name = %s\n",name);
if (name) if (name)
{ {
/*
fprintf(stderr, "DEBUG: ------------------------------------\n");
fprintf(stderr, "DEBUG: We are in the special va_args loop!\n");
fprintf(stderr, "DEBUG: Current critical variables read:\n");
fprintf(stderr, "DEBUG: ------------------------------------\n");
fprintf(stderr, "DEBUG: name = %s\n", name);
fprintf(stderr, "DEBUG: buf = '%s' (%d)\n", buf, *buf);
fprintf(stderr, "DEBUG: len = %d\n", len);
fprintf(stderr, "DEBUG: strlen(name) = %d\n", strlen(name));
fprintf(stderr, "DEBUG: strlen(buf) = %d\n", strlen(buf));
fprintf(stderr, "DEBUG: ---- continuing ----\n");
*/
len = wstrlen (name); len = wstrlen (name);
// fprintf(stderr, "DEBUG: len = %d\n", len);
wstrncpy (buf, name, len); wstrncpy (buf, name, len);
// fprintf(stderr, "DEBUG: buf = '%s' (%d)\n", buf, *buf);
// fprintf(stderr, "DEBUG: strlen(buf) = %d\n", strlen(buf));
buf += len; buf += len;
// fprintf(stderr, "DEBUG: buf = '%s' (%d)\n", buf, *buf);
// fprintf(stderr, "DEBUG: Calling va_arg\n");
/*
The old code follows.. I've broken this all down while troubleshooting.
if ((R = va_arg (vlist, RESPONSE_REF)) == (RESPONSE_REF)-1) if ((R = va_arg (vlist, RESPONSE_REF)) == (RESPONSE_REF)-1)
name = 0; name = 0;
*/
R = va_arg(vlist, int);
// fprintf(stderr, "DEBUG: Return from call to va_arg\n");
// fprintf(stderr, "DEBUG: R = %d\n", R);
if (R == ((RESPONSE_REF)-1)) name = 0;
// fprintf(stderr, "DEBUG: name = %s\n", name);
} }
} while (name); } while (name);
va_end (vlist); va_end (vlist);