+ fixing crash: no good idea to make char array (char*) external to other compilation unit

(might be a 64-bit pointer problem or (higher probability) an order of initialization problem)
  found another (better) solution for that
This commit is contained in:
Rainer Kottenhoff 2017-08-18 10:18:57 +02:00
parent accbcdcb2e
commit fbf995a5c1
4 changed files with 22 additions and 17 deletions

View File

@ -68,8 +68,6 @@ extern int iSrcEncoding;
extern int iWeakSrcEncoding;
extern BOOL bAccelWordNavigation;
extern char* chExtendedWhiteSpaceChars;
int g_DOSEncoding;
@ -268,11 +266,7 @@ HWND EditCreate(HWND hwndParent)
SendMessage(hwnd,SCI_ASSIGNCMDKEY,(SCK_END + (0 << 16)),SCI_LINEENDWRAP);
SendMessage(hwnd,SCI_ASSIGNCMDKEY,(SCK_HOME + (SCMOD_SHIFT << 16)),SCI_VCHOMEWRAPEXTEND);
SendMessage(hwnd,SCI_ASSIGNCMDKEY,(SCK_END + (SCMOD_SHIFT << 16)),SCI_LINEENDWRAPEXTEND);
if (bAccelWordNavigation)
SendMessage(hwnd, SCI_SETWHITESPACECHARS, 0, (LPARAM)chExtendedWhiteSpaceChars);
else
SendMessage(hwnd, SCI_SETCHARSDEFAULT, 0, 0);
SendMessage(hwnd, SCI_SETCHARSDEFAULT, 0, 0);
// Init default values for printing
EditPrintInit();
@ -2855,9 +2849,9 @@ void EditModifyLines(HWND hwnd,LPCWSTR pwszPrefix,LPCWSTR pwszAppend)
UINT mbcp = (UINT)SendMessage(hwnd, SCI_GETCODEPAGE, 0, 0);
if (lstrlen(pwszPrefix))
WideCharToMultiByte(mbcp,0,pwszPrefix,-1,mszPrefix1,COUNTOF(mszPrefix1),NULL,NULL);
WCHAR2MBCS(mbcp, pwszPrefix, mszPrefix1, COUNTOF(mszPrefix1));
if (lstrlen(pwszAppend))
WideCharToMultiByte(mbcp,0,pwszAppend,-1,mszAppend1,COUNTOF(mszAppend1),NULL,NULL);
WCHAR2MBCS(mbcp, pwszAppend, mszAppend1, COUNTOF(mszAppend1));
if (SC_SEL_RECTANGLE != SendMessage(hwnd,SCI_GETSELECTIONMODE,0,0))
{

View File

@ -1608,21 +1608,21 @@ UINT GetDlgItemTextA2W(UINT uCP,HWND hDlg,int nIDDlgItem,LPSTR lpString,int nMax
WCHAR wsz[1024] = L"";
UINT uRet = GetDlgItemTextW(hDlg,nIDDlgItem,wsz,COUNTOF(wsz));
ZeroMemory(lpString,nMaxCount);
WCharToMBCS(uCP,wsz,lpString,nMaxCount-2);
WCHAR2MBCS(uCP,wsz,lpString,nMaxCount-2);
return uRet;
}
UINT SetDlgItemTextA2W(UINT uCP,HWND hDlg,int nIDDlgItem,LPSTR lpString)
{
WCHAR wsz[1024] = L"";
MBCSToWChar(uCP,lpString,wsz,COUNTOF(wsz));
MBCS2WCHAR(uCP,lpString,wsz,COUNTOF(wsz));
return SetDlgItemTextW(hDlg,nIDDlgItem,wsz);
}
LRESULT ComboBox_AddStringA2W(UINT uCP,HWND hwnd,LPCSTR lpString)
{
WCHAR wsz[1024] = L"";
MBCSToWChar(uCP,lpString,wsz,COUNTOF(wsz));
MBCS2WCHAR(uCP,lpString,wsz,COUNTOF(wsz));
return SendMessageW(hwnd,CB_ADDSTRING,0,(LPARAM)wsz);
}

View File

@ -14,7 +14,14 @@
*******************************************************************************/
#define SMALL_BUFFER 128
#define MIDSZ_BUFFER 256
#define LARGE_BUFFER 512
#define HUGE_BUFFER 1024
#define UNUSED(expr) (void)(expr)
#define SIZEOF(ar) sizeof(ar)
#define COUNTOF(ar) ARRAYSIZE(ar) //#define COUNTOF(ar) (sizeof(ar)/sizeof(ar[0]))
#define CSTRLEN(s) (COUNTOF(s)-1)
@ -142,8 +149,9 @@ int FormatNumberStr(LPWSTR);
BOOL SetDlgItemIntEx(HWND,int,UINT);
#define MBCSToWChar(c,a,w,i) MultiByteToWideChar(c,0,a,-1,w,i)
#define WCharToMBCS(c,w,a,i) WideCharToMultiByte(c,0,w,-1,a,i,NULL,NULL)
#define MBCS2WCHAR(c,a,w,i) MultiByteToWideChar((c),0,(a),-1,(w),(i))
#define WCHAR2MBCS(c,w,a,i) WideCharToMultiByte((c),0,(w),-1,(a),(i),NULL,NULL)
UINT GetDlgItemTextA2W(UINT,HWND,int,LPSTR,int);
UINT SetDlgItemTextA2W(UINT,HWND,int,LPSTR);

View File

@ -110,7 +110,7 @@ WCHAR tchToolbarBitmap[MAX_PATH] = { L'\0' };
WCHAR tchToolbarBitmapHot[MAX_PATH] = { L'\0' };
WCHAR tchToolbarBitmapDisabled[MAX_PATH] = { L'\0' };
char chExtendedWhiteSpaceChars[256] = { '\0' };
char chExtendedWhiteSpaceChars[MIDSZ_BUFFER] = { '\0' };
int iPathNameFormat;
BOOL fWordWrap;
@ -702,6 +702,9 @@ int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpCmdLine,int n
SciCall_SetFontQuality(FontQuality[iSciFontQuality]);
}
if (bAccelWordNavigation)
PostMessage(hwndEdit,SCI_SETWHITESPACECHARS,0,(LPARAM)chExtendedWhiteSpaceChars);
hAccMain = LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_MAINWND));
hAccFindReplace = LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_ACCFINDREPLACE));
@ -5906,11 +5909,11 @@ void LoadSettings()
dwFileCheckInverval = IniSectionGetInt(pIniSection,L"FileCheckInverval",2000);
dwAutoReloadTimeout = IniSectionGetInt(pIniSection,L"AutoReloadTimeout",2000);
WCHAR buffer[256];
WCHAR buffer[MIDSZ_BUFFER];
const WCHAR defextwsc[] = L".,;:|/-+$%&<>(){}[]=?#'*";
IniSectionGetString(pIniSection, L"ExtendedWhiteSpaceChars", defextwsc, buffer, COUNTOF(buffer));
if (!lstrlen(buffer)) lstrcpyn(buffer, defextwsc, COUNTOF(buffer));
WideCharToMultiByte(CP_ACP, 0, buffer, -1, chExtendedWhiteSpaceChars, COUNTOF(chExtendedWhiteSpaceChars), NULL, NULL);
WCHAR2MBCS(CP_ACP,buffer,chExtendedWhiteSpaceChars,COUNTOF(chExtendedWhiteSpaceChars));
LoadIniSection(L"Toolbar Images",pIniSection,cchIniSection);