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:
@@ -111,26 +111,91 @@ 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);
|
||||||
buf += 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)
|
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user