[PATCH] Fix index check condition for RB_SHOWBAND

Nikolay Sivov nsivov at codeweavers.com
Sun Jun 6 16:15:43 CDT 2010


---
 dlls/comctl32/rebar.c       |    2 +-
 dlls/comctl32/tests/rebar.c |   31 +++++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/dlls/comctl32/rebar.c b/dlls/comctl32/rebar.c
index cd3abad..7a2995c 100644
--- a/dlls/comctl32/rebar.c
+++ b/dlls/comctl32/rebar.c
@@ -2779,7 +2779,7 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, INT iBand, BOOL show)
 {
     REBAR_BAND *lpBand;
 
-    if (iBand < 0 || iBand > infoPtr->uNumBands)
+    if (iBand < 0 || iBand >= infoPtr->uNumBands)
 	return FALSE;
 
     lpBand = REBAR_GetBand(infoPtr, iBand);
diff --git a/dlls/comctl32/tests/rebar.c b/dlls/comctl32/tests/rebar.c
index a75a064..d5f27b9 100644
--- a/dlls/comctl32/tests/rebar.c
+++ b/dlls/comctl32/tests/rebar.c
@@ -925,6 +925,36 @@ static HWND create_parent_window(void)
     return hwnd;
 }
 
+static void test_showband(void)
+{
+    HWND hRebar;
+    REBARBANDINFOA rbi;
+    BOOL ret;
+
+    hRebar = create_rebar_control();
+
+    /* no bands */
+    ret = SendMessageA(hRebar, RB_SHOWBAND, 0, TRUE);
+    ok(ret == FALSE, "got %d\n", ret);
+
+    rbi.cbSize = REBARBANDINFOA_V6_SIZE;
+    rbi.fMask = RBBIM_SIZE | RBBIM_CHILDSIZE | RBBIM_CHILD;
+    rbi.cx = 200;
+    rbi.cxMinChild = 100;
+    rbi.cyMinChild = 30;
+    rbi.hwndChild = NULL;
+    SendMessageA(hRebar, RB_INSERTBAND, -1, (LPARAM)&rbi);
+
+    /* index out of range */
+    ret = SendMessageA(hRebar, RB_SHOWBAND, 1, TRUE);
+    ok(ret == FALSE, "got %d\n", ret);
+
+    ret = SendMessageA(hRebar, RB_SHOWBAND, 0, TRUE);
+    ok(ret == TRUE, "got %d\n", ret);
+
+    DestroyWindow(hRebar);
+}
+
 START_TEST(rebar)
 {
     HMODULE hComctl32;
@@ -948,6 +978,7 @@ START_TEST(rebar)
 
     test_bandinfo();
     test_colors();
+    test_showband();
 
     if(!is_font_installed("System") || !is_font_installed("Tahoma"))
     {
-- 
1.5.6.5


--------------020801060704080502000305--



More information about the wine-patches mailing list