documentmap: ViewZoneDlg: fixed uninitialized variables
The real problem is `_viewZoneCanvas`, which can be used unitialized by `drawZone`.
This commit is contained in:
parent
0ce219566a
commit
9f5f8d13c5
@ -440,10 +440,14 @@ BOOL CALLBACK ViewZoneDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPara
|
|||||||
case WM_INITDIALOG :
|
case WM_INITDIALOG :
|
||||||
{
|
{
|
||||||
_viewZoneCanvas = ::GetDlgItem(_hSelf, IDC_VIEWZONECANVAS);
|
_viewZoneCanvas = ::GetDlgItem(_hSelf, IDC_VIEWZONECANVAS);
|
||||||
|
if (NULL != _viewZoneCanvas)
|
||||||
|
{
|
||||||
::SetWindowLongPtrW(_viewZoneCanvas, GWL_USERDATA, reinterpret_cast<LONG>(this));
|
::SetWindowLongPtrW(_viewZoneCanvas, GWL_USERDATA, reinterpret_cast<LONG>(this));
|
||||||
_canvasDefaultProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(_viewZoneCanvas, GWL_WNDPROC, reinterpret_cast<LONG>(canvasStaticProc)));
|
_canvasDefaultProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtr(_viewZoneCanvas, GWL_WNDPROC, reinterpret_cast<LONG>(canvasStaticProc)));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_LBUTTONDOWN:
|
case WM_LBUTTONDOWN:
|
||||||
{
|
{
|
||||||
@ -466,7 +470,7 @@ BOOL CALLBACK ViewZoneDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPara
|
|||||||
|
|
||||||
case WM_SIZE:
|
case WM_SIZE:
|
||||||
{
|
{
|
||||||
if (_viewZoneCanvas)
|
if (NULL != _viewZoneCanvas)
|
||||||
{
|
{
|
||||||
int width = LOWORD(lParam);
|
int width = LOWORD(lParam);
|
||||||
int height = HIWORD(lParam);
|
int height = HIWORD(lParam);
|
||||||
@ -479,8 +483,8 @@ BOOL CALLBACK ViewZoneDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPara
|
|||||||
{
|
{
|
||||||
//Have to perform the scroll first, because the first/last line do not get updated untill after the scroll has been parsed
|
//Have to perform the scroll first, because the first/last line do not get updated untill after the scroll has been parsed
|
||||||
::SendMessage(_hParent, DOCUMENTMAP_MOUSEWHEEL, wParam, lParam);
|
::SendMessage(_hParent, DOCUMENTMAP_MOUSEWHEEL, wParam, lParam);
|
||||||
}
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_DESTROY :
|
case WM_DESTROY :
|
||||||
{
|
{
|
||||||
|
@ -53,7 +53,7 @@ enum moveMode {
|
|||||||
class ViewZoneDlg : public StaticDialog
|
class ViewZoneDlg : public StaticDialog
|
||||||
{
|
{
|
||||||
public :
|
public :
|
||||||
ViewZoneDlg() : StaticDialog() {};
|
ViewZoneDlg() : StaticDialog(), _viewZoneCanvas(NULL), _canvasDefaultProc(nullptr), _higherY(0), _lowerY(0) {}
|
||||||
|
|
||||||
void doDialog();
|
void doDialog();
|
||||||
|
|
||||||
@ -63,6 +63,7 @@ public :
|
|||||||
void drawZone(long hY, long lY) {
|
void drawZone(long hY, long lY) {
|
||||||
_higherY = hY;
|
_higherY = hY;
|
||||||
_lowerY = lY;
|
_lowerY = lY;
|
||||||
|
if (NULL != _viewZoneCanvas)
|
||||||
::InvalidateRect(_viewZoneCanvas, NULL, TRUE);
|
::InvalidateRect(_viewZoneCanvas, NULL, TRUE);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user