ImageList_Remove returns TRUE when removing all images of an empty
ImageList.

diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index 9697813..75acaf4 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -2292,6 +2292,8 @@
     HDC     hdcSrc, hdcDst;
     INT     cxNew, nCount;
 
+    TRACE("(himl=%p i=%d)\n", himl, i);
+
     if (himl == NULL) {
         ERR("Invalid image list handle!\n");
         return FALSE;
@@ -2302,14 +2304,13 @@
         return FALSE;
     }
 
-    if (himl->cCurImage == 0) {
-        ERR("image list is already empty!\n");
-        return FALSE;
-    }
-
     if (i == -1) {
         /* remove all */
-        TRACE("remove all!\n");
+	if (himl->cCurImage == 0) {
+	    /* remove all on empty ImageList is allowed */
+	    TRACE("remove all on empty ImageList!\n");
+	    return TRUE;
+	}
 
         himl->cMaxImage = himl->cInitial + himl->cGrow;
         himl->cCurImage = 0;
@@ -3051,4 +3052,3 @@
 
     return TRUE;
 }
-