Subversion Repositories filter_foundry

Compare Revisions

Regard whitespace Rev 521 → Rev 520

/trunk/language.c
21,52 → 21,22
#include "ff.h"
 
void strcpy_advance_id(TCHAR** str, int msgid) {
//TCHAR tmp[1000];
int len;
TCHAR tmp[1000];
 
len = FF_GetMsg(*str, msgid);
FF_GetMsg(*str, msgid);
 
*str += len;
 
//FF_GetMsg(&tmp[0], msgid);
//len = xstrlen(&tmp[0]);
if (len == 0) {
simplealert(TEXT("strcpy_advance_id ist len=0!"));
FF_GetMsg(&tmp[0], msgid);
*str += xstrlen(&tmp[0]);
}
}
 
// Attention: No bounds checking!
int FF_GetMsg(TCHAR* ret, int MsgId) {
void FF_GetMsg(TCHAR* ret, int MsgId) {
#ifdef WIN_ENV
 
#ifdef UNICODE
TCHAR* szMsg;
int len;
len = LoadString(hDllInstance, MsgId, (LPTSTR)&szMsg, 0);
if (len == 0) return 0; // resource not found
if (ret != NULL) {
LoadString(hDllInstance, MsgId, ret, len + 1);
}
return len;
#else
// LoadStringA is either broken or badly documented!
// The documentation says that you receive a read-only string reference as well as the length as return value if cchBufferMax==0.
// Reality shows that return value is -1 if cchBufferMax==0.
// https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/8d8c5382-1867-460a-a18f-70dc425ffe2f/loadstring-not-behaving-as-documented?forum=windowssdk
// We cannot receive a read-only memory using LoadStringA, because the WinAPI needs to do a Unicode-to-ANSI convertion,
// so we must define some max limit.
TCHAR szMsg[4096];
int len;
len = LoadString(hDllInstance, MsgId, (LPTSTR)&szMsg, 4096);
if (len == 0) return 0; // resource not found
if (ret != NULL) {
LoadString(hDllInstance, MsgId, ret, len + 1);
}
return len;
#endif
 
#else
Str255 msg;
GetIndString(msg, 1000, MsgId);
myp2cstrcpy(ret, msg);
79,8 → 49,7
TCHAR* szMsg;
int len;
TCHAR* ret;
len = FF_GetMsg(NULL, MsgId);
if (len == 0) return NULL; // resource not found
len = LoadString(hDllInstance, MsgId, (LPTSTR)&szMsg, 0);
ret = (TCHAR*)malloc((len+1) * sizeof(TCHAR));
if (ret == NULL) return NULL;
LoadString(hDllInstance, MsgId, ret, len+1);