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:
@@ -112,25 +112,90 @@ construct_response (UNICODE *buf, RESPONSE_REF R, ...)
|
||||
UNICODE *name;
|
||||
va_list vlist;
|
||||
|
||||
// fprintf(stderr, "DEBUG: We've entered into construct_response!\n");
|
||||
|
||||
va_start (vlist, R);
|
||||
|
||||
// fprintf(stderr, "DEBUG: R = %d\n", R);
|
||||
|
||||
do
|
||||
{
|
||||
COUNT len;
|
||||
STRING S;
|
||||
|
||||
// fprintf(stderr, "DEBUG: len = %d\n",len);
|
||||
|
||||
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));
|
||||
|
||||
// fprintf(stderr, "DEBUG: buf = '%s' (%d) \n", buf, *buf);
|
||||
// fprintf(stderr, "DEBUG: strlen(buf) = %d\n", strlen(buf));
|
||||
|
||||
len = wstrlen (buf);
|
||||
|
||||
// fprintf(stderr, "DEBUG: len = %d\n",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 *);
|
||||
|
||||
// fprintf(stderr, "DEBUG: returned from va_arg call\n");
|
||||
// fprintf(stderr, "DEBUG: name = %s\n",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);
|
||||
|
||||
// fprintf(stderr, "DEBUG: len = %d\n", 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;
|
||||
|
||||
// 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)
|
||||
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);
|
||||
va_end (vlist);
|
||||
|
||||
Reference in New Issue
Block a user