Add one missing buffer size rounding in the edit control.
Make rounding code slightly more readable.
This commit is contained in:
parent
4f2df51f7a
commit
df793bcb68
|
@ -35,6 +35,7 @@ DECLARE_DEBUG_CHANNEL(relay);
|
||||||
FIXME: BTW, new specs say 65535 (do you dare ???) */
|
FIXME: BTW, new specs say 65535 (do you dare ???) */
|
||||||
#define BUFLIMIT_SINGLE 32766 /* maximum buffer size (not including '\0') */
|
#define BUFLIMIT_SINGLE 32766 /* maximum buffer size (not including '\0') */
|
||||||
#define GROWLENGTH 32 /* buffers granularity in bytes: must be power of 2 */
|
#define GROWLENGTH 32 /* buffers granularity in bytes: must be power of 2 */
|
||||||
|
#define ROUND_TO_GROW(size) (((size) + (GROWLENGTH - 1)) & ~(GROWLENGTH - 1))
|
||||||
#define HSCROLL_FRACTION 3 /* scroll window by 1/3 width */
|
#define HSCROLL_FRACTION 3 /* scroll window by 1/3 width */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1513,7 +1514,7 @@ static void EDIT_LockBuffer(WND *wnd, EDITSTATE *es)
|
||||||
TRACE("%d bytes translated to %d WCHARs\n", countA, countW_new);
|
TRACE("%d bytes translated to %d WCHARs\n", countA, countW_new);
|
||||||
if(countW_new > es->buffer_size + 1)
|
if(countW_new > es->buffer_size + 1)
|
||||||
{
|
{
|
||||||
UINT alloc_size = (countW_new * sizeof(WCHAR) + GROWLENGTH - 1) & ~(GROWLENGTH - 1);
|
UINT alloc_size = ROUND_TO_GROW(countW_new * sizeof(WCHAR));
|
||||||
TRACE("Resizing 32-bit UNICODE buffer from %d+1 to %d WCHARs\n", es->buffer_size, countW_new);
|
TRACE("Resizing 32-bit UNICODE buffer from %d+1 to %d WCHARs\n", es->buffer_size, countW_new);
|
||||||
hloc32W_new = LocalReAlloc(es->hloc32W, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT);
|
hloc32W_new = LocalReAlloc(es->hloc32W, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT);
|
||||||
if(hloc32W_new)
|
if(hloc32W_new)
|
||||||
|
@ -1678,7 +1679,7 @@ static BOOL EDIT_MakeFit(WND *wnd, EDITSTATE *es, UINT size)
|
||||||
EDIT_UnlockBuffer(wnd, es, TRUE);
|
EDIT_UnlockBuffer(wnd, es, TRUE);
|
||||||
|
|
||||||
if (es->hloc32W) {
|
if (es->hloc32W) {
|
||||||
UINT alloc_size = ((size + 1) * sizeof(WCHAR) + GROWLENGTH - 1) & ~(GROWLENGTH - 1);
|
UINT alloc_size = ROUND_TO_GROW((size + 1) * sizeof(WCHAR));
|
||||||
if ((hNew32W = LocalReAlloc(es->hloc32W, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT))) {
|
if ((hNew32W = LocalReAlloc(es->hloc32W, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT))) {
|
||||||
TRACE("Old 32 bit handle %08x, new handle %08x\n", es->hloc32W, hNew32W);
|
TRACE("Old 32 bit handle %08x, new handle %08x\n", es->hloc32W, hNew32W);
|
||||||
es->hloc32W = hNew32W;
|
es->hloc32W = hNew32W;
|
||||||
|
@ -1715,7 +1716,7 @@ static BOOL EDIT_MakeUndoFit(EDITSTATE *es, UINT size)
|
||||||
|
|
||||||
TRACE("trying to ReAlloc to %d+1\n", size);
|
TRACE("trying to ReAlloc to %d+1\n", size);
|
||||||
|
|
||||||
alloc_size = ((size + 1) * sizeof(WCHAR) + GROWLENGTH - 1) & ~(GROWLENGTH - 1);
|
alloc_size = ROUND_TO_GROW((size + 1) * sizeof(WCHAR));
|
||||||
if ((es->undo_text = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, es->undo_text, alloc_size))) {
|
if ((es->undo_text = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, es->undo_text, alloc_size))) {
|
||||||
es->undo_buffer_size = alloc_size/sizeof(WCHAR);
|
es->undo_buffer_size = alloc_size/sizeof(WCHAR);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -2173,7 +2174,7 @@ static void EDIT_UnlockBuffer(WND *wnd, EDITSTATE *es, BOOL force)
|
||||||
if(countA_new > countA)
|
if(countA_new > countA)
|
||||||
{
|
{
|
||||||
HLOCAL hloc32A_new;
|
HLOCAL hloc32A_new;
|
||||||
UINT alloc_size = (countA_new + GROWLENGTH - 1) & ~(GROWLENGTH - 1);
|
UINT alloc_size = ROUND_TO_GROW(countA_new);
|
||||||
TRACE("Resizing 32-bit ANSI buffer from %d to %d bytes\n", countA, alloc_size);
|
TRACE("Resizing 32-bit ANSI buffer from %d to %d bytes\n", countA, alloc_size);
|
||||||
hloc32A_new = LocalReAlloc(es->hloc32A, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT);
|
hloc32A_new = LocalReAlloc(es->hloc32A, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT);
|
||||||
if(hloc32A_new)
|
if(hloc32A_new)
|
||||||
|
@ -2196,7 +2197,7 @@ static void EDIT_UnlockBuffer(WND *wnd, EDITSTATE *es, BOOL force)
|
||||||
if(countA_new > countA)
|
if(countA_new > countA)
|
||||||
{
|
{
|
||||||
HLOCAL16 hloc16_new;
|
HLOCAL16 hloc16_new;
|
||||||
UINT alloc_size = (countA_new + GROWLENGTH - 1) & ~(GROWLENGTH - 1);
|
UINT alloc_size = ROUND_TO_GROW(countA_new);
|
||||||
TRACE("Resizing 16-bit ANSI buffer from %d to %d bytes\n", countA, alloc_size);
|
TRACE("Resizing 16-bit ANSI buffer from %d to %d bytes\n", countA, alloc_size);
|
||||||
hloc16_new = LOCAL_ReAlloc(wnd->hInstance, es->hloc16, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT);
|
hloc16_new = LOCAL_ReAlloc(wnd->hInstance, es->hloc16, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT);
|
||||||
if(hloc16_new)
|
if(hloc16_new)
|
||||||
|
@ -2406,12 +2407,13 @@ static HLOCAL EDIT_EM_GetHandle(EDITSTATE *es)
|
||||||
if(!es->hloc32A)
|
if(!es->hloc32A)
|
||||||
{
|
{
|
||||||
CHAR *textA;
|
CHAR *textA;
|
||||||
INT countA;
|
UINT countA, alloc_size;
|
||||||
TRACE("Allocating 32-bit ANSI alias buffer\n");
|
TRACE("Allocating 32-bit ANSI alias buffer\n");
|
||||||
countA = WideCharToMultiByte(CP_ACP, 0, es->text, -1, NULL, 0, NULL, NULL);
|
countA = WideCharToMultiByte(CP_ACP, 0, es->text, -1, NULL, 0, NULL, NULL);
|
||||||
if(!(es->hloc32A = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT, countA)))
|
alloc_size = ROUND_TO_GROW(countA);
|
||||||
|
if(!(es->hloc32A = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT, alloc_size)))
|
||||||
{
|
{
|
||||||
ERR("Could not allocate %d bytes for 32-bit ANSI alias buffer\n", countA);
|
ERR("Could not allocate %d bytes for 32-bit ANSI alias buffer\n", alloc_size);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
textA = LocalLock(es->hloc32A);
|
textA = LocalLock(es->hloc32A);
|
||||||
|
@ -2444,7 +2446,7 @@ static HLOCAL EDIT_EM_GetHandle(EDITSTATE *es)
|
||||||
static HLOCAL16 EDIT_EM_GetHandle16(WND *wnd, EDITSTATE *es)
|
static HLOCAL16 EDIT_EM_GetHandle16(WND *wnd, EDITSTATE *es)
|
||||||
{
|
{
|
||||||
CHAR *textA;
|
CHAR *textA;
|
||||||
INT countA;
|
UINT countA, alloc_size;
|
||||||
|
|
||||||
if (!(es->style & ES_MULTILINE))
|
if (!(es->style & ES_MULTILINE))
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -2462,9 +2464,10 @@ static HLOCAL16 EDIT_EM_GetHandle16(WND *wnd, EDITSTATE *es)
|
||||||
}
|
}
|
||||||
|
|
||||||
countA = WideCharToMultiByte(CP_ACP, 0, es->text, -1, NULL, 0, NULL, NULL);
|
countA = WideCharToMultiByte(CP_ACP, 0, es->text, -1, NULL, 0, NULL, NULL);
|
||||||
|
alloc_size = ROUND_TO_GROW(countA);
|
||||||
|
|
||||||
TRACE("Allocating 16-bit ANSI alias buffer\n");
|
TRACE("Allocating 16-bit ANSI alias buffer\n");
|
||||||
if (!(es->hloc16 = LOCAL_Alloc(wnd->hInstance, LMEM_MOVEABLE | LMEM_ZEROINIT, countA))) {
|
if (!(es->hloc16 = LOCAL_Alloc(wnd->hInstance, LMEM_MOVEABLE | LMEM_ZEROINIT, alloc_size))) {
|
||||||
ERR("could not allocate new 16 bit buffer\n");
|
ERR("could not allocate new 16 bit buffer\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -4272,7 +4275,7 @@ static LRESULT EDIT_WM_NCCreate(WND *wnd, DWORD style, HWND hwndParent, BOOL uni
|
||||||
es->style |= ES_AUTOHSCROLL;
|
es->style |= ES_AUTOHSCROLL;
|
||||||
}
|
}
|
||||||
|
|
||||||
alloc_size = ((es->buffer_size + 1) * sizeof(WCHAR) + GROWLENGTH - 1) & ~(GROWLENGTH - 1);
|
alloc_size = ROUND_TO_GROW((es->buffer_size + 1) * sizeof(WCHAR));
|
||||||
if(!(es->hloc32W = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT, alloc_size)))
|
if(!(es->hloc32W = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT, alloc_size)))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
es->buffer_size = LocalSize(es->hloc32W)/sizeof(WCHAR) - 1;
|
es->buffer_size = LocalSize(es->hloc32W)/sizeof(WCHAR) - 1;
|
||||||
|
|
Loading…
Reference in New Issue