diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog
index 6c96a905f..9667b5d19 100644
--- a/winsup/w32api/ChangeLog
+++ b/winsup/w32api/ChangeLog
@@ -1,7 +1,14 @@
 2006-05-10  Dimitri Papadopoulos  <papadopo@users.sourceforge.net>
 
-	* include/amvideo.h (RESET_MASKS,RESET_PALETTE): Use ZeroMemory instead
-	of memset to avoid <string.h>. Still need a fix for memcmp.
+	* include/amvideo.h (BIT_MASKS_MATCH): Don't use memcmp to
+	avoid dependency on <string.h>.
+	There's no Win32 equivalent for memcmp:
+	http://support.microsoft.com/default.aspx?scid=kb;EN-US;q99456
+
+2006-05-10  Dimitri Papadopoulos  <papadopo@users.sourceforge.net>
+
+	* include/amvideo.h (RESET_MASKS,RESET_PALETTE): Use ZeroMemory
+	instead of memset to avoid dependency on <string.h>.
 	* include/dshow.h (AM_ASPECT_RATIO_MODE,AM_WST_DRAWBGMODE,AM_WST_LEVEL)
 	(AMExtendedSeekingCapabilities,AM_WST_SERVICE,AM_WST_STATE)
 	(AM_WST_STYLE): Add enums.
diff --git a/winsup/w32api/include/amvideo.h b/winsup/w32api/include/amvideo.h
index a5825901e..10e8e60e7 100644
--- a/winsup/w32api/include/amvideo.h
+++ b/winsup/w32api/include/amvideo.h
@@ -25,7 +25,7 @@ extern "C" {
 #define AMDDS_YUV (AMDDS_YUVOFF|AMDDS_YUVOVR|AMDDS_YUVFLP)
 #define AMDDS_RGB (AMDDS_RGBOFF|AMDDS_RGBOVR|AMDDS_RGBFLP)
 #define AMDDS_PRIMARY (AMDDS_DCIPS|AMDDS_PS)
-#define BIT_MASKS_MATCH(pbmi1,pbmi2) (!memcmp((pbmi1)->dwBitMasks,(pbmi2)->dwBitMasks,3*sizeof(DWORD)))
+#define BIT_MASKS_MATCH(pbmi1,pbmi2) ((pbmi1)->dwBitMasks[0] == (pbmi2)->dwBitMasks[0] && (pbmi1)->dwBitMasks[1] == (pbmi2)->dwBitMasks[1] && (pbmi1)->dwBitMasks[2] == (pbmi2)->dwBitMasks[2])
 #define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= 8)
 #define PALETTE_ENTRIES(pbmi) (1 << (pbmi)->bmiHeader.biBitCount)
 #define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(pbmi)->dwBitFields,3*sizeof(DWORD)))